为什么$ 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重复三次。有人可以解释为什么吗?有办法阻止这种重复吗?