包含ng-repeat的指令没有找到子元素

时间:2014-04-17 12:44:47

标签: javascript angularjs

我希望我的包装指令获取元素并将事件绑定到它们。 我的标记是这样的:

<div wrapping-directive>
   <div ng-repeat='item in items'></div>
</div>

我想要的是在包装指令中获取ng-repeat创建的所有项目,如下所示:

app.directive('wrappingDirective', function() {
    return function(scope, element, attrs) {
        var items = element.find('div'); // this returns an empty array
        // if i write $(element).find('div'); it returns an empty array as well
    }
});

1 个答案:

答案 0 :(得分:1)

也许直接将指令放在物品上并给它们发生事件。

<div>
   <div ng-repeat='item in items' event-directive></div>
</div>

app.directive('eventDirective', function() {
    return {
      link: function(scope, element, attrs) {
          $(element).click( //
      }        
    }
});

或者使用指令本身注入列表。

<div wrapping-directive>

</div>

app.directive('wrappingDirective', function() {
    return {
       scope: {
         "items": "="
       },
       template:"<div ng-repeat='item in items' ng-click='doSomething(item)'></div>",
       link: function(scope, element, attrs) {
           $scope.doSomething = function(item){
            //
           }
       }
    }
});