我需要在数据准备就绪之前检测到出现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');
}
}
};
}
}
}
答案 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