95

有什么区别:

{{::office.name}}

{{office.name}}

在 AngularJS 中?

4

2 回答 2

101

来自 Angular 文档的一次性绑定。

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

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


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

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

于 2016-01-08T13:40:08.457 回答
87

{{::office.name}}语法是 Angular 的 One-Time 绑定,从 1.3 版开始可用这里
一个很好的博客解释它。

于 2016-01-08T13:39:09.017 回答