2016-07-01 8 views
1

このplunkには、DOMに要素を追加するディレクティブがあります。ループでchildren()を使用しようとすると、私は例外を受け取りますforEachは関数ではありません。 children()は、これが動作すると期待していた配列を返します。子供たちを得る方法?ディレクティブのDOM要素の子をループする

Javascriptを:

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

チェック '子供()'メソッドは約束を返した場合、私は通常の配列/オブジェクトを期待して約束にぶつかってしまう:

はplunkerを更新しました。 – 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

私はうまくいきました。それはなぜですか? –

関連する問題