1

我想实现我自己的 ng-repeat 版本。但不知何故,我无法让它工作,因为 jquery append 方法似乎不起作用。

脚本.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");
        })
      }
    }
  }
})

索引.html:

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

plnkr.co 使用的代码

4

1 回答 1

1

在阅读了一些 jquery 代码后,我找到了答案。Append 将在附加 DOM 元素时检查并删除重复项。我打包c到一个 dom 列表中,并将我的 for 循环中的附加行更改为:

element.append(c.clone());

问题消失了。

于 2013-04-21T00:45:10.230 回答