在下面的代码中, Angular Directive(指令)“myscroll”如何知道正在创建哪些 ng-repeat 元素?
<myscroll>
<div ng-repeat="a in arr">{{a}}</div>
</myscroll>
我知道 $last 事件没有触发到父指令,我该如何解决这个问题?
myapp.directive("myscroll", function () {
return{
restrict: "E",
transclude: true,
template: "<span class='left'></span><div class='mask' ng-transclude></div><span class='right'></span>",
link: function (scope, element, attr) {
scope.$watch("$last",function(){ console.log("ng-repeat rendered") })
}
}
})
最佳答案
一个简单的方法是创建一个名为“repeat-done”的新指令,并在“ng-repeat”所在的位置使用它。然后,您可以根据需要通知“myscroll”指令(父作用域)。
<myscroll>
<div ng-repeat="a in arr" repeat-done>{{a}}</div>
</myscroll>
myapp.directive('repeatDone', [function () {
return {
restrict: 'A',
link: function (scope, element, iAttrs) {
var parentScope = element.parent().scope();
if (scope.$last){
// ng-repeat is completed and you now have access to 'myscroll' scope
console.log(parentScope);
}
}
};
}])
关于javascript - 在 Angular Directive(指令)中完成 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071221/