2016-07-01 63 views
1

DOM元素的子元素循環在此plunk我有一個指令,將元素追加到DOM。當我嘗試在循環中使用children()時,我得到一個異常,forEach不是函數。由於children()返回一個數組我預計這個工作。如何讓孩子?通過指令

的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

檢查'兒()'方法返回一個承諾,我通常最終會撞上諾言期待陣列/對象。 – 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

我希望工作。爲什麼沒有!? –