我的AngularJS应用显示了一只狗的清单。用户可以使用复选框选择其中一些狗,然后单击“删除”按钮以删除选定的狗。像这样的东西:
<tr ng-repeat="dog in dogs">
<td>{{dog.name}}</td>
<td>{{dog.breed}}</td>
<td><input type="checkbox" ng-model="dog.checked"></td>
</tr>
<button ng-click="deleteDogs(dogs)">Delete</button>
我正在尝试了解在Angular中执行此操作的最佳方法。目前,我ng-click
只是简单地调用了deleteDogs(dogs)
该控制器方法,并在删除它之前测试是否检查了每条狗。它有效,但我不喜欢它。特别是,我不喜欢将整个狗列表传递给deleteDogs()
。
因此,我编写了一个自定义isChecked
过滤器来测试对象是否checked=true
希望这样做:
<button ng-click="deleteDogs(dogs | filter:isChecked)">Delete</button>
甚至这个:
<button ng-click="deleteDogs(dogs | filter:{checked:true})">Delete</button>
但两者都会导致Angular分析错误。有没有更好的方法来实现这一目标?谢谢。
在点击处理程序中使用过滤器。传递$filter
到您的控制器,然后:
$filter("filterNameHere")(input, arg1, arg2, ...);
如果您对模板中的设置不满意,也可以将过滤器绑定到范围:
$scope.myFilter = $filter("filterNameHere");
然后:
<thing ng-click="doSomething(myFilter(someValue, someArg))"></thing>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句