函数执行的次数超出预期
Function executed more times than expected
这里有一个简短的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>
jsfiddle上的例子。
它正确地显示了两次字符串word
,但当我检查控制台时,它显示了4次执行的函数(通过console.log('1')
)。知道为什么吗?
这是因为属性上的for..in
循环和Array也有属性length
,还有一个属性使它下次循环。IU如果你想看,就做console.log(i)
使用angular.forEach
或旧的for(var i = 0; i < ...)
编辑:失败的答案:原因是因为棱角分明。
他将遍历该列表两次:一次在init,一次在循环结束时检查的更改
看起来视图只渲染了两次,所以我认为您没有真正的问题。。。
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环