2016-07-01 2 views
1

plunk에는 DOM에 요소를 추가하는 지시문이 있습니다. 루프에서 children()을 사용할 때 forEach 함수가 아닌 예외가 발생합니다. children() 배열이 내가 이것을 기대하고 있기 때문에 반환합니다. 아이들을 얻는 방법?지시문에서 DOM 요소의 자식을 반복합니다.

자바 스크립트 :

directive.link = function (scope, element, attrs) { 

    var wrap = angular.element('<div id="wrap"></div>'); 
    var wrapc = $compile(wrap)(scope) 
    element.append(wrapc); 

    var node1 = angular.element('<div id="node1"></div>'); 
    var node1c = $compile(node1)(scope) 
    wrapc.append(node1c); 

    var node2 = angular.element('<div id="node2"></div>'); 
    var node2c = $compile(node2)(scope) 
    wrapc.append(node2c); 

    var children = wrapc.children(); 
    children.forEach(function(elem){ // <-- this doesn't work 
     console.log(elem.attr('id')); 
    }); 

}; 
+1

점검, 나는 보통 배열/객체를 기대 약속 부딪히는 끝. – M22an

+0

아니요, 약속을 반환하지 않는 것 같습니다. – ps0604

+0

흠, Angular의 'angular.element.children()'에 대한 설명서에서 jQuery에 해당하는 내용을 가리 킵니다. 'children' 변수를 로깅 할 때 무엇을 얻게됩니까? – M22an

답변

3

그건 당신이 달성하는 데 필요한 거라면 나도 몰라,하지만이처럼 작성합니다

var children = wrapc.children(); 
angular.forEach(children, function(value, key){ 
    console.log(children[key].id)); 
}); 
+0

그 소원 근무했습니다. 왜 그렇지 않습니까!? –

1

JQuery와 방법 .attr() 예외를 던지고, 나는 그것을 자바 스크립트에서 .id을 사용하도록 변경함으로써 고칠 수 있었다.

업데이트 plunker :`아이들()는`방법은 약속을 반환하는 경우 http://plnkr.co/edit/OT0fSnryaY7A4hmeZLj9?p=preview

관련 문제