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

Pau*_*aul 179 attributes expression angularjs

我想这样做:

ng-hide="!globals.isAdmin && mapping.is_default"
Run Code Online (Sandbox Code Playgroud)

但表达式总是评估false.

我不想定义特殊功能$scope.

Mar*_*cok 211

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

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

  • 你是对的.问题是isAdmin标志的类型是'string'而不是'boolean'. (4认同)

小智 121

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

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

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

ng-show="User=='admin' || User=='teacher'"
Run Code Online (Sandbox Code Playgroud)

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

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


小智 12

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

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

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


Jam*_*ard 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的条件显示