为什么$ compile在ng-repeat中创建多个元素?

时间:2018-09-25 11:50:41

标签: angularjs angularjs-directive

为什么$ compile在ng-repeat中创建多个元素?

HTML:

<li ng-repeat="action in actions" set-on-click function="{{action.function}}"><i class="{{action.class}}" aria-hidden="true"></i>{{action.text}}</li>

指令:

directive('setOnClick', ['$compile', function ($compile) {
    return {
        restrict: "A",
        link: function(scope, elm, attrs, ctrl)
        {
          console.log(attrs.function);  
          elm.attr("ng-click", attrs.function);
          elm.removeAttr("set-on-click");
          $compile(elm)(scope);
        }
      };
}]);

我从具有3条记录的数据库中获得$scope.actions的价值。我必须使用指令,以便将ng-click绑定到从数据库中获取的函数。我没有得到3 li物品,而是得到9。每个li重复三次。有人可以解释为什么吗?有办法阻止这种重复吗?

0 个答案:

没有答案