我有一个包含其他指令列表的指令。在每个子指令中,它们可以包含任意数量的.item
HTML元素。在父指令内部,我想使用jQuery引用所有这些.item
元素。所以我尝试了以下内容:
HTML结构
<parent>
<div class='item'></div>
<ul>
<li ng-repeat='child in children'>
<!-- loads template that may have one or more divs with .item on them -->
<child='child' />
</li>
</ul>
</parent>
在父link()
函数内部,我调用了$(".item").size()
。在这种情况下,它总是返回1.有没有办法在所有子指令加载后调用函数,所以我可以访问所有内部.item元素?
答案 0 :(得分:0)
我想,这是因为你在内部指令运行之前过早地查询DOM。 尝试:
setTimeout(function(){
$(".item").size();
}, 0);
或$timeout
如果您需要在超时回调函数中执行与范围相关的操作。
您还可以尝试:
scope.$evalAsync(function(){
$(".item").size();
});
但是如果没有代码示例,很难说哪个会工作。
您可以在此处详细了解setTimeout
和$evalAsync
差异:AngularJS : $evalAsync vs $timeout。