Javascript 与ngIf指令结合使用时,一次性绑定重新计算变量是否正确安格拉斯
我的一个同事向我展示了一个非常奇怪的行为,即在一个角落里一次性绑定 用例:Javascript 与ngIf指令结合使用时,一次性绑定重新计算变量是否正确安格拉斯,javascript,angularjs,Javascript,Angularjs,我的一个同事向我展示了一个非常奇怪的行为,即在一个角落里一次性绑定 用例: <div ng-if="a" class="blue">{{ ::text }}</div> 当您有一个元素,该元素的文本由一个一次性绑定在块内,该块由ng if条件约束,那么如果我们更改该值,例如添加一些字母,然后更改ng if的条件,之后,一次性绑定的值被刷新 HTML: <div ng-if="a" class="blue">{{ ::text }}</div&g
<div ng-if="a" class="blue">{{ ::text }}</div>
当您有一个元素,该元素的文本由一个一次性绑定在块内,该块由ng if条件约束,那么如果我们更改该值,例如添加一些字母,然后更改ng if的条件,之后,一次性绑定的值被刷新
HTML:
<div ng-if="a" class="blue">{{ ::text }}</div>
{{::text}
这是一种bug,还是预期的行为
下面是我正在做的一个示例:如果
ng If
的条件为false,然后为true,它将重新创建其内容,导致再次计算一次性ng bind
指令
一次绑定所做的唯一一件事是避免在表达式上添加监视,但它不会“缓存”或“存储”再次编译指令内容时的结果
因此,这是预期的行为。按预期工作,因为使用
ngIf
指令,代码被完全重新编译。如果您使用ngShow
,行为会发生变化,代码的行为与您对ngIf的期望一致。这是因为代码是,所以不会导致变量的重新(第一次)求值。是的,我知道,但是有一种错误,或者说是预期的行为?这是预期的行为。假设您的内容在使用列表的ng repeat中。每当列表发生更改并且创建或重新创建行时,即使表达式是一次性绑定,也会再次计算它们。如果使用的是ng show
,而不是ng if
,则值不会更改,因为这一次内容将只是更改可见性而不是重新创建。如果您不喜欢这种行为,只需在运行angular应用程序时使用ng If一次性绑定ng If=“::a”
查看您的HTML即可。ng show only define display:none on element,而ng在每次更改条件时都编译html。当@jjmotes回答时,您正在重新评估表达式的值