{{obj}}和{{:: obj}}之间的AngularJS差异

时间:2015-12-13 22:58:33

标签: angularjs

我是Angular的新手,看到其他人用这段代码写的文件:

{{ ::set.text }}

这与

有什么关系?
{{ set.text }}

两者都加载到页面上,我无法区分。

1 个答案:

答案 0 :(得分:4)

{{ :: expression }}表示绑定一次。这个将等待表达式给出结果并在模板中显示。如果表达式的值稍后更改,则视图不会。它将始终显示它解析的第一个值。

{{ expression }}将评估每个摘要的表达式。如果表达式的值发生更改,则视图将使用新值进行更新。

下面的示例显示了差异。在加载应用程序时,未设置变量 - 两个段落都是空的。只要您开始键入值更改并更新视图。但是当你输入你的第二个字符时,只有第二个段落会更新,因为已经设置了一次性绑定并且不再观察变量的变化。



angular.module('myApp', []).controller('myController', function(){});

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js"></script>

<div ng-app="myApp" ng-controller="myController">
  <p>Bind once: {{ :: variable }}</p>
  <p>Normal binding: {{ variable }}</p>
  
  <div>
    <span>Write to change value of variable:</span>
    <input type="text" ng-model="variable" />
  </div>
<div>
&#13;
&#13;
&#13;