ng-hide / ng-show中是否可以使用复杂的表达式?

时间:2013-03-01 20:19:23

标签: attributes angularjs expression

我想这样做:

ng-hide="!globals.isAdmin && mapping.is_default"

但表达式总是评估为false

我不想在$scope上定义特殊功能。

5 个答案:

答案 0 :(得分:209)

如果您需要运行任意JavaScript代码,请使用控制器方法,或者您可以定义返回true或false的过滤器。

我刚刚测试过(应该先做过),像ng-show="!a && b"这样的东西按预期工作。

答案 1 :(得分:118)

ng-show / ng-hide仅接受boolean个值。

对于复杂的表达式,最好使用控制器和范围来避免并发症。

下面一个会工作(这不是很复杂的表达)

ng-show="User=='admin' || User=='teacher'"

当两个条件中的任何一个返回true(OR运算)时,此元素将显示在UI中。

像这样你可以使用任何表达。

答案 2 :(得分:12)

如果没有太多表达式,这将有效。

示例:ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

对于除此之外的任何表达,请使用控制器。

答案 3 :(得分:6)

我通常会尝试避免使用ng-show和ng-hide表达式,因为它们被设计为布尔值,而不是条件。如果我需要条件和布尔逻辑,我更喜欢使用ng-if作为第一个检查放入条件逻辑,然后使用ng-show和ng-hide添加对布尔逻辑的附加检查

然而,如果你想使用ng-show或ng-hide的条件,这里有一些例子的链接:Conditional Display using ng-if, ng-show, ng-hide, ng-include, ng-switch

答案 4 :(得分:2)

上述一些答案对我没有用,但确实如此。以防其他人有同样的问题。

ng-show="column != 'vendorid' && column !='billingMonth'"