在ng-hide / ng-show中可能有复杂的expression式吗?

我想这样做:

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

但expression式的评估总是false

我不想在$scope上定义特殊的函数。

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

我刚刚testing过(应该先做),像ng-show="!a && b"按预期工作。

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

对于复杂的expression式,使用控制器和范围来避免复杂性是很好的。

下面的一个工作(这不是很复杂的expression)

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

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

像这样你可以使用任何expression式。

这将工作,如果你没有太多的expression式。

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

对于比这更多的expression式使用控制器。

我通常尽量避免使用ng-show和ng-hideexpression式,因为它们被devise为布尔值,而不是条件。 如果我同时需要条件逻辑和布尔逻辑,我宁愿使用ng-if作为第一个检查来添加条件逻辑,然后用ng-show和ng-hide添加对布尔逻辑的额外检查

Howerver,如果你想使用ng-show或ng-hide的条件,下面是一些例子的链接: 使用ng-if,ng-show,ng-hide,ng-include,ng-switch的条件显示

其中一些上述答案不适合我,但是这样做。 以防万一别人有同样的问题。

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