2

用一个例子来说明我的问题可能是最好的。

这是一个模板片段:

<div class="title">{{action}} Location</div>

双卷曲标记告诉 AngularJS 评估action当前范围创建一个数据绑定到action.

有没有办法告诉 AngularJS 评估action一次并完成(即我不需要数据绑定/监视)?

4

4 回答 4

4

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>
于 2013-05-15T07:38:56.540 回答
3

我从 Angular 邮件列表中找到了 Pasvaz 的 bindonce 模块,这是另一种更适合我需要的解决方案。

更新 10/27/2014:从 v1.3 开始,AngularJS 核心支持一次性绑定

于 2013-05-16T19:09:42.627 回答
2

我遇到了同样的问题。我想评估表达式,但我不想显示它。所以我找到了一种解决方案,只需将您想要评估的表达式放入 ng-hide div 并将 ng-hide 设置为 false 就像

<div ng-hide="true">{{your expression here}}</div>

它将执行表达式而不显示内容

于 2016-02-01T07:09:16.880 回答
0

设置要在该模板中使用的范围时,请使用 angular.copy。Angular 不会将 var 设置为副本。angular.copy 用于存储 watchExpression 的当前值的值,以供以后比较。

于 2013-05-16T19:24:20.523 回答