【发布时间】:2016-04-13 05:10:48
【问题描述】:
有什么区别:
{{::office.name}}
和
{{office.name}}
在 angularJS 中?
【问题讨论】:
标签: javascript angularjs angular-template
有什么区别:
{{::office.name}}
和
{{office.name}}
在 angularJS 中?
【问题讨论】:
标签: javascript angularjs angular-template
One-time binding From Angular Docs.
以
::开头的表达式被视为一次性表达式。一次性表达式一旦稳定就会停止重新计算,如果表达式结果是一个未定义的值,这会在第一次摘要之后发生(参见下面的值稳定算法)。
在许多情况下,值只需要显示在视图中,并且永远不会从视图或控制器中更新。但是,如果使用双向绑定,$digest 将在每个循环中检查表达式的任何变化,这不是必需的。在这些情况下,:: 应该在表达式之前使用。正如上面所说,在这种情况下,这比双向绑定语法更有效。
博客:AngularJS one-time binding syntax 来自@Todd Motto
简而言之,当我们在 DOM 中声明诸如
{{ ::foo }}之类的值时,一旦定义了该值,Angular 就会渲染它,将其与观察者解除绑定,从而减少$digest中的绑定量环形。简单!
【讨论】:
{{::office.name}} 语法是 Angular 的一次性绑定,从 1.3 版开始可用
Here's 一个很好的博客解释它。
【讨论】: