在指令中循环使用DOM元素的子元素

时间:2016-07-01 11:12:16

标签: angularjs

在这个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'));
    });

};

2 个答案:

答案 0 :(得分:3)

我不知道你是否需要达到这个目标,但我会这样写:

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

答案 1 :(得分:1)

jQuery方法.attr()抛出了异常,我可以通过将其更改为使用javascript中的.id来修复它。

更新了plunker:http://plnkr.co/edit/OT0fSnryaY7A4hmeZLj9?p=preview