【发布时间】:2015-11-04 18:11:09
【问题描述】:
我正在关注Meteor To-Do App tutorial with Angular integration 并正在学习过滤集合。通过遵循本教程中的原则,我已经能够在我正在开发的应用程序的集合上实现一个简单的过滤器,但现在我一直在试图弄清楚如何向过滤器添加多个查询。
在示例中,您可以通过切换复选框来查看未完成的任务。这是在控制器中实现的,通过观察 $scope.hideCompleted 的变化并将其作为 Mongo 查询传递以过滤 Meteor 集合。
观察者
$scope.$watch('hideCompleted', function() {
if ($scope.hideCompleted)
$scope.query = {checked: {$ne: true}};
else
$scope.query = {};
});
收藏过滤器
$scope.tasks = $meteor.collection(function() {
return Tasks.find($scope.getReactively('query'), {sort: {createdAt: -1}})
});
如何使查询支持多个过滤器? 例如,假设我选择扩展示例并按优先级排列每个待办事项。然后我会有一个输入字段供用户按优先级过滤集合,其值绑定到$scope.priority。现在,如果我想通过不完整和 priority=$scope.priority 任务过滤待办事项列表,我知道 Mongo 查询需要类似于 Tasks.find({ $and: [{ checked: {$ne: true} },{ priority: $scope.priority }]},{ sort: { createdAt: -1 } })。
在我的应用程序中,我已经能够让两个观察者正确跟踪对两个范围变量的更改,类似于我的示例 $scope.hideCompleted 和 $scope.priority,但我不知道如何采取下一步过滤集合时合并查询。我还对this package 进行了一些修改,因为我最终希望能够按许多标准进行过滤和排序,但在切换到我在这里描述的概念之前我并没有走得太远.
如果能提供任何帮助,我将不胜感激。谢谢!
【问题讨论】:
标签: angularjs meteor angular-meteor