1

我有一个包含其他指令列表的指令。在每个子指令中,它们可以包含任意数量的.itemHTML 元素。在父指令内部,我想.item使用 jQuery 引用所有这些元素。所以我尝试了以下方法:

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 元素?

4

1 回答 1

0

我猜,这是因为您在内部指令运行之前过早地查询 DOM。尝试:

setTimeout(function(){
   $(".item").size();
}, 0);

或者$timeout如果您需要在超时回调函数中执行与范围相关的操作。

你也可以试试:

scope.$evalAsync(function(){
  $(".item").size();
});

但是如果没有代码示例,很难判断哪一个可以工作。你可以在这里阅读更多关于setTimeout$evalAsync差异的信息:AngularJS:$evalAsync vs $timeout

于 2013-08-06T19:42:01.927 回答