如果您确实需要填充ID,则可以在其中运行相关代码,scope.$evalAsync或者$timeout确保绑定已首先更新。我建议您尽量避免使用DOM来检查DOM,而应使用模型来获取这些信息scope.$index。
您的指令在到达链接功能时已经处于编译过程中,并且在达到链接功能时已被链接,因此我认为重新编译无济于事。这只是等待足够长的时间来完成链接并开始$digest实际更新属性的情况。这正是您所$evalAsync要做的。
此处的示例:http ://plnkr.co/edit/n77x4C?p=preview
解决方法html
<div repeater ng-repeat=’item in items’ class=’first’ id = ’{{$index}}’ > {{item}} </div>
angularjs指令:-
angular.module(’time’,[]) .directive(’repeater’,function() { var linkFn = function(scope,element,attrs){ var id = $(element).attr(’id’); alert(id); // {{$index}} } ...
在ng-repeat内部创建的动态ID,当在内部指令中引发时显示为{{$ index}},而不是value = 0、1、2 …
如何确保指令中的Linker函数执行动态ID时使用?我认为可以在指令中使用$compile来完成。但是我不知道怎么办?
$compile(element)(scope)
是语法。但是显然是错误的顺序。