ng-repeat运行两次(Angular)

时间:2014-11-27 20:16:42

标签: javascript angularjs ng-repeat

考虑以下ng-repeat:

<p ng-repeat="item in items">
    <span ng-bind="getName(item)"></span>
</p>

现在奇怪的是,如果我有一个包含10个项目的数组,则getName被调用20次

结帐jsfiddle

有人可以解释为什么会这样。表现明智这可能是一种杀戮(我可以想象)

1 个答案:

答案 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>