2013-08-06 4 views
1

다른 지시어 목록이 포함 된 지시문이 있습니다. 이 하위 지시문 각각에는 임의의 수의 .item HTML 요소가있을 수 있습니다. 상위 지시문에서 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> 

내가 $(".item").size()를 호출 부모 link() 기능의 내부 : 그래서 나는 다음과 같은 노력했다. 이 경우, 항상 1을 반환합니다. 내부의 .item 요소를 모두 액세스 할 수 있도록 모든 하위 지시문이로드 된 후에 함수를 호출하는 방법이 있습니까?

답변

0

내 지시어가 실행되기 전에 너무 빨리 DOM을 쿼리하기 때문입니다. 시도 :

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

또는 $timeout 당신이 제한 시간 콜백 함수의 범위와 관련된 일을해야하는 경우.

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

을하지만 하나의 코드 샘플없이 작동 할 얘기하기 어렵다 :

또한 시도 할 수 있습니다. setTimeout$evalAsync 차이점에 대한 자세한 내용은 AngularJS : $evalAsync vs $timeout을 참조하십시오.

관련 문제