2013-08-06 30 views
1

我有一個包含其他指令列表的指令。在這些子指令的每一箇中,它們可以具有任何數量的.itemHTML元素。在父指令內部,我想使用jQuery來引用所有這些.item元素。所以,我曾嘗試以下:AngularJS:有沒有辦法知道何時加載了另一個指令中包含的指令?

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

我想,這是因爲您在內部指令運行之前查詢DOM過早。 嘗試:

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

$timeout如果你需要做的,在超時回調函數範圍相關的東西。

您也可以嘗試:

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

,但很難說哪一個沒有代碼示例工作。 您可以在這裏閱讀更多關於setTimeout$evalAsync的差異:AngularJS : $evalAsync vs $timeout

相關問題