我正在尝试使用ng-repeat
实施ng-style
。它完美地运作。但是,我不明白为什么我的方法被调用的次数超过ng-repeat
中的元素数量!
你知道为什么吗?
为了完成我的解释,我创建了一个:JSFiddle
答案 0 :(得分:0)
我认为在编译html代码时,即使没有数据(当items == null),它也会执行ng-style指令。之后,您的控制器更改$ scope.items,强制其他调用$ scope.getStyle()。
我想如果你把一个ng-if =" items!= null"在ng-repeat中,你的函数只会被调用5次。
答案 1 :(得分:0)
解决方案看起来很好。多次调用的原因是角度摘要循环。您可以在此处阅读:http://www.benlesh.com/2013/08/angularjs-watch-digest-and-apply-oh-my.html
它的工作原理是运行循环并查看手表的值是否已更改。当它们稳定时就会结束。您可以在角度应用程序中进行多次事件循环传递,这很正常。限制设置为10次迭代。如果绑定不稳定,则抛出异常。
额外阅读,强烈推荐: http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html Part Keep Keep Digesting虽然Dirty是我相信你的问题的答案。
所以它是设计的。