在angularjs中使用三元运算符来设置元素的属性

Posted

技术标签:

【中文标题】在angularjs中使用三元运算符来设置元素的属性【英文标题】:Using ternary operator in angularjs to set an attribute on an element 【发布时间】:2018-01-03 02:52:55 【问题描述】:

我正在使用 angularjs 1.6 并且需要使用特定的 css 库,如果按钮定义如下,则该库将禁用按钮:

<button disabled="">
   My button
</button>

如果已定义,将启用按钮:

<button disabled="">
   My button
</button>

我正在尝试根据控制器内服务中属性的最新值启用/禁用它,但即使 someProperty 已定义,该按钮始终显示为已启用......有什么想法吗?

<button  ctrl.myService.getData().someProperty ? '' : 'disabled=""' >
   My button
</button>

【问题讨论】:

使用 ng-disabled="someProperty" 正如 vivz 所说 &lt;button ng-disabled="ctrl.myService.getData().someProperty"&gt;My button&lt;/button&gt; 不会禁用按钮.. 即使someProperty 不存在 【参考方案1】:

尝试使用

<button ng-disabled="ctrl.myService.getData().someProperty ? 'disabled': '' ">
   My button
</button>

【讨论】:

【参考方案2】:

我们可以使用ng-disabled 属性来实现这一点。所以它就像:

<button ng-disabled="ctrl.myService.getData().someProperty ? true : false">
   My button
</button>

如果有帮助,请告诉我。

【讨论】:

以上是关于在angularjs中使用三元运算符来设置元素的属性的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 在绑定中使用三元运算符和过滤器

在 AngularJS 的三元运算符中使用过滤器

Angular js(1.4)在ng-repeat中使用三元运算符来显示不同的html?

堆叠三元运算符在 Angularjs 表达式中不起作用

如何在 AngularJS 的 ng-init 中使用三元? [复制]

AngularJS:三元运算符条件检查中的函数调用