用一个例子说明我的问题可能是最好的。
以下是模板代码段:
<div class="title">{{action}} Location</div>
Double curly markup告诉AngularJS针对当前范围 AND 评估action
以创建与action
的数据绑定。
有没有办法告诉AngularJS一次评估action
并完成(即我不需要数据绑定/监视)?
答案 0 :(得分:4)
我无法在Angular中找到interporate once
功能的直接支持。
但是你可以通过使用单独的变量轻松解决它
从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>
答案 1 :(得分:3)
我从Angular邮件列表中找到了Pasvaz's bindonce module,这是另一种更适合我需要的解决方案。
UPDATE 10/27/2014:从v1.3开始,AngularJS核心支持one-time binding
答案 2 :(得分:2)
我遇到了同样的问题。我想评估表达式,但我不想显示它。所以我找到了一个解决方案,只需将您想要在ng-hide div中评估的表达式设置为false,并将ng-hide设置为false,如
<div ng-hide="true">{{your expression here}}</div>
它将执行表达式而不显示内容
答案 3 :(得分:0)
设置要在该模板中使用的范围时,请使用angular.copy。 Angular不会将var设置为副本。 angular.copy用于存储watchExpression的当前值的值,以供稍后比较。