捕获ngRepeat init事件

时间:2016-08-24 07:40:28

标签: angularjs angularjs-ng-repeat

我需要在数据准备就绪之前检测到出现ngRepeat的时刻。

我尝试使用compile(它会为ngRepeat触发一次),但仍然没有运气,它会在数据准备就绪后触发。

目标是在父指令上设置加载微调器。并准备好数据删除它。

猜猜我可以使用父帖子链接在子节点中搜索指令,但它不是有角度的方式。

以下是plunker https://plnkr.co/edit/5OY5ySZm5L6Ba5Vw17af?p=preview

    function testDirective(){
        return {
            compile: function compile(){
                console.log('on data ready too, but I want it to be fired on init');
                return {
                    pre: function(scope){

                        if(scope.$first){
                            console.log('first');
                        }

                        if(scope.$last){
                            console.log('last');
                        }
                    }
                };
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

我会如此使用ng-show指令:

<ul ng-controller="TestController as tc">
    <li ng-show='tc.items' ng-repeat="item in ::tc.items">{{::item}}</li>
    <div ng-show='!tc.items'>Loading...</div>
</ul>

这是一个工作的plunker。 https://plnkr.co/edit/hOGlVZkmoMUyOOEskcnM?p=preview

如果您需要一些不太具体的东西,我可以将其作为包装指令。

答案 1 :(得分:0)

找到解决方案。我的指示priority: 1001。然后在ngRepeat之前编译fire。

这是一个有效的工作人员https://plnkr.co/edit/5OY5ySZm5L6Ba5Vw17af?p=preview