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 に答える