ng-click中的三元表达式在angularjs中

Posted

技术标签:

【中文标题】ng-click中的三元表达式在angularjs中【英文标题】:ternary expression in ng-click in angularjs 【发布时间】:2014-08-10 09:10:45 【问题描述】:

我想知道是否可以在 ng-click 属性中使用三元表达式。 如果可能,我不想使用单独的控制器功能

这是一个双按钮切换设置 - 我可以让一个简单的切换工作,但不希望再次单击“关闭”按钮重新打开。

ng-click 中的三元组不起作用(注意 ng-class 中的三元组起作用):

<button
    ng-click="allOn2==true ? allOn2 : !allOn2"
    ng-class="allOn2==true ? 'btn-green-on' : 'btn-green-off'">
ON</button>

这是一个更完整的 jsfiddle: toggler

【问题讨论】:

为什么不直接使用 ng-switch? 尚未了解 ng-switch,但通过简短的检查,它似乎更像是一个多选 ng-show/hide。谢谢 【参考方案1】:

你没有对三元表达式做任何事情。为了它有用,分配它:

 var1   var2
<button
    ng-click="var1 = (allOn2==true ? allOn2 : !allOn2)"
    ng-class="'btn-green-on':allOn2, 'btn-green-off' : !allOn2">
ON</button>

我不确定如何将三元表达式用于 ng-class...

【讨论】:

啊...你是对的。我的小提琴没有显示任何我绑定了 allOn 值的 ng-model,就像在我的项目中一样。但我明白为什么你的建议有效。我想我很困惑,因为 ng-class 要求你“什么都不做”,即只评估表达式以找到类。我需要让 on-click 显式设置 allOn 的值,我认为这只是通过对表达式的评估而发生的。谢谢! 这里是更新小提琴的链接:link 在三元中检查布尔值有点多余。 allOn2==true ? allOn2 : !allOn2 可以是 allOn2 = !allOn2【参考方案2】:

您可以使用某些东西作为三元的解决方法

 ng-click="(AppliedApps!=null && Collapse('CollapsedAppliedApplications')) || 
(AppliedApps.length==0 && Collapse('CollapsedAppliedApplications'))">

【讨论】:

以上是关于ng-click中的三元表达式在angularjs中的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量传递给angularjs中的三元条件?

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

AngularJS 三元表达式无效

AngularJS - 在 Chrome 中选择文本触发父级中的 ng-click

angularjs 指令中的可操作性 - 渲染具有 ng-click 的锚点

AngularJS 使用 ng-click 调用控制器内的函数