有什么区别:
{{::office.name}}
和
{{office.name}}
在angularJS?
答案 0 :(得分:92)
以
::
开头的表达式被视为一次性表达式。一次性表达式将在稳定后停止重新计算,如果表达式结果为非未定义值,则会在第一次摘要后发生(请参阅下面的值稳定算法)。
在许多情况下,值只需要在视图中显示,并且永远不会从视图或控制器更新。但是,如果使用双向绑定,$digest
将检查每个循环中表达式的任何更改,这是不必要的。在这些情况下,应在表达之前使用::
。如上面的声明中所述,对于这种情况,这比双向绑定语法更有效。
在一个坚果shell中,当我们在DOM中声明一个诸如
{{ ::foo }}
之类的值时,一旦定义了这个值,Angular就会渲染它,将它与观察者解除绑定,从而减少{}内部的绑定量{1}}循环。简单!
答案 1 :(得分:77)
{{::office.name}}
语法是Angular的一次性绑定,自版本1.3起可用
Here's一个不错的博客解释它。