我正在关注todo list angular tutorial。现在,我想遍历我的所有待办事项列表并清除属性完成的所有项目。
现在在我的index.html文件中,我有一个按钮,其ng-click属性为“clearCompleted()”。该函数在我的js文件中看起来像这样:
$scope.clearCompleted = function () {
$scope.todos = $filter($scope.todos, function(todo){
return !todo.done;
});
};
此功能有什么问题,因为它没有清除设置为完成的待办事项:true。
在更一般的问题中,我可以用“选择属性完成的所有项目是否为真”这一点的典型方式是什么,因为我更习惯于ruby而不是javascript。
答案 0 :(得分:2)
$filter(name)
获取具有该名称的过滤器。为了实际调用它,你可以编写`$ filter(name)(过滤器的参数 /)
有一个名为filter
的预定义过滤器,可用于过滤数组。您传入一个对象进行比较:
$scope.clearCompleted = function () {
$scope.todos = $filter("filter")($scope.todos, {done:false});
};
返回属性done
的所有项目,其值为false
。
答案 1 :(得分:1)
试试这个语法:
$scope.todos = $filter("filter")($scope.todos, function(todo){
实施例: http://jsfiddle.net/cherniv/89Qqs/
不要忘记先将$filter
服务注入控制器!