功能执行的次数比预期的多

时间:2016-04-18 09:58:01

标签: javascript angularjs

这是一个简短的Angular应用程序:

angular.module('AppName', [])
.controller('TwoController', function($scope){
var oneArray = ['1','2'];
$scope.secondArray = [];
for (i in oneArray){
  $scope.secondArray.push({
    property: function(){
      console.log('1');
      return 'word';
    }
  })
}
});

在视图中我有:

<div ng-app="AppName" ng-controller="TwoController">
<p ng-repeat='entry in secondArray'>{{entry.property()}}</p>
</div>

The example on jsfiddle.

它正确显示字符串word两次,但是当我检查控制台时,它会显示执行4次的功能(通过console.log('1'))。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这是因为属性上的for..in循环和Array也具有属性length,另一个循环使其循环另一次。如果你想看到它只是做console.log(i)

使用angular.forEach或旧for(var i = 0; i < ...)

编辑:答案失败:原因是因为角色。

他将通过列表两次:一次在初始化,一次在他的循环结束时检查更改

答案 1 :(得分:0)

似乎视图只会呈现两次,所以我不认为你有一个真正的问题...