前言
在用AngularJS期间,经常用到ng-repeat,业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写。有经验的同学都应该知道,在ng-repeat模板实例内部会暴露出一些特殊属性$index/$first/$middle/$last/$odd/$even
,$index
会随着每次遍历(从0开始)递增,当遍历到最后一个时,$last
的值为true,so,通过判断$last
的值来监听ng-repeat的执行状态,怎么在遍历过程中拿到$last
的值:自定义指令
小实例,我只写了最重要的部分
打开控制台,会打印出0,1,2,当$index = 2点时候,$last
值为true,ng-repeat渲染完毕
so easy!
当然指令最好是能够复用,在这个指令内写具体的业务逻辑不利于复用,可以通过给指令指定一个处理函数renderFinish