角度表达式{{::}}中的两个冒号是什么意思?

时间:2016-01-08 13:37:04

标签: javascript angularjs angular-template

有什么区别:

{{::office.name}}

{{office.name}}

在angularJS?

2 个答案:

答案 0 :(得分:92)

One-time binding From Angular Docs.

  

::开头的表达式被视为一次性表达式。一次性表达式将在稳定后停止重新计算,如果表达式结果为非未定义值,则会在第一次摘要后发生(请参阅下面的值稳定算法)。

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

来自AngularJS one-time binding syntax

的博客:@Todd Motto
  

在一个坚果shell中,当我们在DOM中声明一个诸如{{ ::foo }}之类的值时,一旦定义了这个值,Angular就会渲染它,将它与观察者解除绑定,从而减少{}内部的绑定量{1}}循环。简单!

答案 1 :(得分:77)

{{::office.name}}语法是Angular的一次性绑定,自版本1.3起可用 Here's一个不错的博客解释它。