这两种情况有什么区别:
{{::office.name}}
字符串和
{{office.name}}
型在AngularJS?
klsxnrf11#
以::开头的表达式被认为是一次性表达式。一次性表达式一旦稳定,就会停止重新计算,如果表达式结果是非未定义值,则会在第一个摘要之后发生(请参阅下面的值稳定算法)。在许多情况下,值只需要显示在视图中,并且永远不会从视图或控制器中更新。但是,如果使用双向绑定,$digest将在每个周期中检查表达式中的任何更改,这是不必要的。在这些情况下,::应该在表达式之前使用。正如上面的语句所述,对于这种情况,这比双向绑定语法更有效。博客:AngularJS one-time binding syntax from @托德座右铭简单地说,当我们在DOM中声明一个值,比如{{ ::foo }},一旦这个值被定义,Angular就会渲染它,从观察者中解除绑定,从而减少$digest循环中的绑定量。很简单!
::
$digest
{{ ::foo }}
vfwfrxfs2#
{{::office.name}}语法是Angular的一次性绑定,从版本1.3开始可用Here's一个很好的博客解释它。
2条答案
按热度按时间klsxnrf11#
One-time bindingFrom Angular Docs.
以
::
开头的表达式被认为是一次性表达式。一次性表达式一旦稳定,就会停止重新计算,如果表达式结果是非未定义值,则会在第一个摘要之后发生(请参阅下面的值稳定算法)。在许多情况下,值只需要显示在视图中,并且永远不会从视图或控制器中更新。但是,如果使用双向绑定,
$digest
将在每个周期中检查表达式中的任何更改,这是不必要的。在这些情况下,::
应该在表达式之前使用。正如上面的语句所述,对于这种情况,这比双向绑定语法更有效。博客:AngularJS one-time binding syntax from @托德座右铭
简单地说,当我们在DOM中声明一个值,比如
{{ ::foo }}
,一旦这个值被定义,Angular就会渲染它,从观察者中解除绑定,从而减少$digest
循环中的绑定量。很简单!vfwfrxfs2#
{{::office.name}}
语法是Angular的一次性绑定,从版本1.3开始可用Here's一个很好的博客解释它。