在点击中使用过滤器

杰莫德

我的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章