考虑以下ng-repeat:
<p ng-repeat="item in items">
<span ng-bind="getName(item)"></span>
</p>
现在奇怪的是,如果我有一个包含10个项目的数组,则getName被调用20次
结帐jsfiddle
有人可以解释为什么会这样。表现明智这可能是一种杀戮(我可以想象)
答案 0 :(得分:3)
这是角度的标准行为。 Angular对值进行脏检查,并且至少运行两次以确保值没有改变。
编辑:
为了避免这种行为,我建议在控制器中映射此名称,这只会针对每个项目评估一次:
function MyCtrl($scope) {
...
$scope.items.forEach(function(item) {
item.name = getName(item);
});
...
});
<p ng-repeat="item in items">
<span>{{item.name}}</span>
</p>