angularexpression式{{::}}中的两个冒号是什么意思?

有什么区别:

{{::office.name}} 

 {{office.name}} 

在angularJS?

{{::office.name}}语法是从1.3版开始提供的Angular的一次性绑定
这里有一个很好的博客解释它。

一次性捆绑从Angular Docs。

::开始的expression式被认为是一次性expression式。 一次性expression式一旦稳定就会停止重新计算,如果expression式结果是一个非未定义的值(见下面的值稳定algorithm),则会在第一个摘要之后发生。

在许多情况下,这些值只需要在视图中显示,而不会从视图或控制器更新。 但是,如果使用双向绑定, $digest将检查每个循环中expression式的任何更改,这是不必要的。 在这些情况下,应在expression前使用:: 。 正如上面的陈述所述,对于这种情况,这比双向绑定语法更有效。


博客: AngularJS @Todd Motto 的一次性绑定语法

在坚果壳中,当我们在DOM中声明一个值{{ ::foo }} ,一旦这个值被定义,Angular将会呈现它,从观察者中解除绑定,从而减less$digest内的绑定的数量循环。 简单!