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