AngularJS - 在ng-repeat之后使用$ timeout来执行函数是否干净

时间:2014-12-16 11:41:17

标签: angularjs angularjs-ng-repeat

我使用ngRepeat指令渲染大数据列表,并且$timeout使用ng-repeat执行{{1}}后的函数(如果已完成)。它运作良好,但这是一种正确的方式吗?

我的意思是它适用于所有情况吗?

2 个答案:

答案 0 :(得分:3)

你可以尝试$last(如果重复元素在迭代器中是最后一个,则$ last = true)。

<div ng-repeat="item in data">
    <span ng-if="$last === true" ng-init="doSomething()"></span>
</div>

示例:http://jsfiddle.net/by3qk8w5/2/

答案 1 :(得分:1)

我无法看到你的代码,但我假设你只是将超时设置为一个等待的任意数字,这意味着你基本上只是希望ng-repeat完成得比这更快。

一个合适的解决方案是使用ng-repeat项目的$ last特殊属性,当渲染ng-repeat项目列表的最后一项时,这是正确的。当它成立时,执行你的回调表达式。

可以在此处找到使用自定义指令的复杂解决方案,例如: http://www.bennadel.com/blog/2592-hooking-into-the-complete-event-of-an-ngrepeat-loop-in-angularjs.htm