我有一个角度指令的想法,但我不确定它是否可能。
我经常要从ng-repeat数组中删除和项目,所以事实上的解决方案是在范围上有一个函数:
$scope.remove = function(item) {
var index = $scope.items.indexOf(item);
$scope.items.splice(index, 1);
}
我经常为每个ng-repeat编写这个样板代码,能够做这样的事情会很好:
<li ng-repeat="item in items">
<button ng-click-remove="item"></button>
</li>
基本上我认为该指令只是简单地包装 - 然后我开始思考,甚至可以从我的指令访问items数组而不知道它的名字或使用$ parent?
答案 0 :(得分:0)
我这样做的方法是创建一个处理删除/创建所述任务的服务,然后在控制器中使用该包装器。我的意思是,你建议的方式,你仍然需要编写相同的代码,但只需在指令中执行。此外,是的,可以从指令访问它,您可以将控制器传递给它。
function dir() {
return {
controller: 'ctrl as ctrl',
link: function(scope, elem, attrs, ctrl){
console.log(ctrl.items);
console.log(attrs.ngClickRemove); // gets the value of item.
}
}
}
虽然我会谨慎使用ng语法,因为它应该保留给Angularjs。