AngularJS:有没有办法知道包含在另一个指令中的指令何时加载

AngularJS: Is there a way to know when directives contained inside another directive have loaded?

本文关键字:指令 另一个 加载 何时 包含 有没有 AngularJS      更新时间:2023-09-26

我有一个包含其他指令列表的指令。在这些子指令中的每一个中,它们可以具有任意数量的.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>

并且在父CCD_ 3函数内部我调用CCD_。在这种情况下,它总是返回1。有没有一种方法可以在加载了所有子指令后调用函数,这样我就可以访问所有内部的.item元素?

我想,这是因为在内部指令运行之前查询DOM太早了。尝试:

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

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

您也可以尝试:

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

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