用一个例子来说明我的问题可能是最好的。
这是一个模板片段:
<div class="title">{{action}} Location</div>
双卷曲标记告诉 AngularJS 评估action
当前范围并创建一个数据绑定到action
.
有没有办法告诉 AngularJS 评估action
一次并完成(即我不需要数据绑定/监视)?
用一个例子来说明我的问题可能是最好的。
这是一个模板片段:
<div class="title">{{action}} Location</div>
双卷曲标记告诉 AngularJS 评估action
当前范围并创建一个数据绑定到action
.
有没有办法告诉 AngularJS 评估action
一次并完成(即我不需要数据绑定/监视)?
interporate once
我在 Angular 中找不到对功能的直接支持。但是您可以通过使用单独的变量轻松解决它,该变量从action
一次复制并且以后永远不会更改。
在您的控制器中:
$scope.action0 = action;
在您的模板中:
<div class="title">{{action0}} Location</div>
编辑:另一种方法是定义一个插入一次的指令并让它不理会。
http://plnkr.co/edit/6Ul1QgqhNH0bqK2af2Jo?p=preview
js:
app.directive('staticBind', function(){
return function(scope, elem, attrs) {
elem.text( scope[ attrs.staticBind ]);
};
});
模板:
<span static-bind="variable"></span>
我从 Angular 邮件列表中找到了 Pasvaz 的 bindonce 模块,这是另一种更适合我需要的解决方案。
更新 10/27/2014:从 v1.3 开始,AngularJS 核心支持一次性绑定
我遇到了同样的问题。我想评估表达式,但我不想显示它。所以我找到了一种解决方案,只需将您想要评估的表达式放入 ng-hide div 并将 ng-hide 设置为 false 就像
<div ng-hide="true">{{your expression here}}</div>
它将执行表达式而不显示内容
设置要在该模板中使用的范围时,请使用 angular.copy。Angular 不会将 var 设置为副本。angular.copy 用于存储 watchExpression 的当前值的值,以供以后比较。