AngularJs:未评估ng-show/ng-hide表达式

jsa*_*ter 13 angularjs

我是javascript和AngularJS的新手,想知道为什么引号内的表达式没有被评估?

<span ng-show="{{remaining()}}!==0">sometext</span>
Run Code Online (Sandbox Code Playgroud)

它只是这样打印:

<span ng-show="2!==0">sometext</span>
Run Code Online (Sandbox Code Playgroud)

无论内容如何,​​ng-show都不起作用.即使表达式包含在eval中,也会显示文本(和打印的表达式):

eval("{{remaining()}}!==0")
Run Code Online (Sandbox Code Playgroud)

为了这个,我在控制器中创建了一个函数:

<span ng-show="renderOrNot()">sometext</span>
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我希望每次想要进行比较时都不必编写函数

Nar*_*etz 35

差不多了 ...

使用时{{}},会对值进行插值,即将标记替换为表达式的结果.ngShow只需要表达式,所以只需按原样使用该函数,它就可以工作:

<span ng-show="remaining() !== 0">sometext</span>
Run Code Online (Sandbox Code Playgroud)

通常,您只需要{{ }}在显示表达式/内容时使用.


Epo*_*okK 16

您不能使用它,{{}}因为您的值是bind.使用ng-show这样:

<span ng-show="remaining() !== 0">sometext</span>
Run Code Online (Sandbox Code Playgroud)