与ngIf指令结合使用时,一次性绑定是否重新评估变量是否正确? - AngularJS

Sam*_*mot 3 javascript angularjs

我的一位同事在工作中向我展示了一种非常奇怪的角度一次性绑定行为.

用例:

当你有一个它的文本绑定元素通过一次内部块是结合的NG-如果有条件的话,如果我们改变这个值,例如添加一些字母,后来改变NG-IF的条件,并经过来自一次性绑定的值已刷新.

HTML:

  <div ng-if="a" class="blue">{{ ::text }}</div>
Run Code Online (Sandbox Code Playgroud)

这是一种错误,还是预期的行为?

这是我正在做的一个例子:http://codepen.io/samot/pen/rLJAdN

jjm*_*tes 7

如果条件为ng-if假而后为真,则它将重新创建其内容,从而ng-bind再次评估一次性指令.

一次性绑定唯一的做法是避免在表达式上添加监视,但是对于再次编译指令内容的情况,它不会"缓存"或"存储"结果.

所以这是预期的行为.

  • 如果您不喜欢这种行为,只需制作ng-if一次性绑定`ng-if =":: a"`在运行angular app时查看HTML.ng-show仅在元素上定义display:none,而ng-if在每次更改条件时编译html. (2认同)