在AngularJS中,jquery append方法似乎不适用于指令

问题描述:

我想实现我自己的ng-repeat版本。但不知何故,我无法得到它的工作,因为jquery append方法似乎不工作。在AngularJS中,jquery append方法似乎不适用于指令

的script.js:

var app = angular.module("app", []); 

app.directive("myRepeat", function() { 
    return { 
    restrict: 'E', 
    compile: function(element, attrs) { 
     var c = element.children()[0]; 
     console.log(c) 
     for(var i=0; i<attrs.times; i++) { 
     element.append(c); 
     } 
     return function(scope, element, attrs) { 
     $(element).click(function() { 
      console.log("hi"); 
     }) 
     } 
    } 
    } 
}) 

的index.html:

<body ng-app="app"> 
    <my-repeat times="5"><p>hello world</p></my-repeat> 
</body> 

Code in use at plnkr.co

+4

我编辑了你的文章,但下次;请在SO上发布您的代码,我们不应该为了阅读您的代码而转到其他页面。例如,可以在同一页面上提供代码,方便您写答案等。 – timss 2013-04-21 00:45:49

+0

会做。谢谢timss! – lkahtz 2013-04-21 19:41:36

我在阅读了一段jQuery代码后找到了答案。追加将在附加DOM元素时检查并删除重复。我收拾c到DOM列表,并改变了追加线在我的for循环为:

element.append(c.clone()); 

,问题就消失了。