Почему $ compile создает несколько элементов в ng-repeat? - PullRequest
0 голосов
/ 25 сентября 2018

Почему $ 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);
        }
      };
}]);

Я получаю значение для $scope.actionsиз базы данных, которая имеет 3 записи.Мне пришлось использовать директиву, чтобы связать ng-click с функцией, которая извлекается из базы данных.Вместо того, чтобы получать 3 li, я получаю 9. Каждый li повторяется трижды.Может кто-нибудь объяснить, почему?Есть ли способ остановить это дублирование?

...