ste*_*rog 4 directive angularjs angularjs-directive ng-repeat angularjs-ng-repeat
我写下面的指令,当ngRepeat元素在UI上呈现时调用一个函数.
指示
directives.directive('repeatDone', function() {
return {
restrict: 'A',
require: 'ngRepeat',
link: function(scope, element, attrs, ngModel) {
if (scope.$last) {
scope.$eval(attrs.repeatDone);
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
但它给出了$compile错误.如果我删除需要的部分,它可以正常工作.
为什么AngularJS不能接受"require:'ngRepeat'"?帮助会很感激.
require用于访问另一个指令的控制器.但是ng-repeat没有控制器.看看的来源为ng-repeat,字控制器甚至没有出现在代码中.该文档也没有提到控制器ng-repeat.
通常,当您使用require它时,因为您想要调用所需控制器的功能.在你的指令的链接函数中,你添加了参数ngModel- 如果它存在,它将填充控制器.但是你从不ngModel在代码中使用这个参数.require在这种情况下,为什么你需要使用它并不是很清楚.
编辑:
在进一步审查时,也许你正在尝试要求,ng-repeat因为你的repeat-done指令不会在一个上下文之外工作ng-repeat.如果这是原因,另一个解决方案可能是遍历DOM查看repeat-done指令的父元素,看看它们是否具有属性"ng-repeat".如果找不到,您的指令可能会抛出错误.但这似乎更多的代码与投资回报很少......