184

我想这样做:

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

但表达式的计算结果始终为false

我不想在$scope.

4

5 回答 5

214

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

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

于 2013-03-01T20:30:44.203 回答
123

ng-show/ng-hide只接受boolean值。

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

下面一个就可以了(不是很复杂的表达式)

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

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

像这样,您可以使用任何表达式。

于 2013-11-28T12:12:05.993 回答
13

如果您没有太多表达式,这将起作用。

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

对于比这更多的表达式,请使用控制器。

于 2015-02-23T12:05:06.070 回答
7

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

但是,如果您想对 ng-show 或 ng-hide 使用条件,这里有一些示例的链接:使用 ng-if、ng-show、ng-hide、ng-include、ng-switch 进行条件显示

于 2016-10-20T14:00:40.013 回答
2

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

ng-show="column != 'vendorid' && column !='billingMonth'"
于 2017-11-09T22:21:42.957 回答