angularjs – 如何循环通过一个函数返回的项目与ng-repeat?
我想重复创建div,项目是一个函数返回的对象。但是下面的代码报告错误:
10 $ digest()迭代到达。中止! jsfiddle在这里: http://jsfiddle.net/BraveOstrich/awnqm/ <body ng-app> <div ng-repeat="entity in getEntities()"> Hello {{entity.id}}! </div> </body>
简短的答案:你真的需要这样的功能或者你可以使用属性?
http://jsfiddle.net/awnqm/1/
答案很长 为了简单起见,我将仅描述您的情况 – 对象数组的ngRepet。此外,我会省略一些细节。 AngularJS使用dirty checking来检测更改。当应用程序启动时,它运行 现在关于ngRepeat。对于每个watch.get调用它存储对象从收集(返回值的getEntities)与缓存中的附加信息( 现在约 为什么你的示例生成错误:function getEntities()总是返回带有新对象的数组。此对象没有hashKey,并且不存在于ngRepeat缓存中。所以ngRepeat在每个watch.get生成新的范围为它新的手表{{entity.id}}。这个watch在第一个watch.get有watch.last == initWatchVal。所以watch.get()!= watch.last。所以$ digest开始新的遍历。所以ngRepeat用新的手表创建新的范围。所以… 10遍之后你会得到错误。 如何解决它 >不要在每次getEntities()调用时创建新对象。 希望知道AngularJS内部的人纠正我,如果我错了什么。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |