我跟随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
。现在,如果我想通过不完整和优先级= $ scope.priority任务来过滤待办事项列表,我理解Mongo查询需要沿着Tasks.find({ $and: [{ checked: {$ne: true} },{ priority: $scope.priority }]},{ sort: { createdAt: -1 } })
的行。
在我的应用程序,我已经能够做两个观察家正确地跟踪变化两个变量的范围,类似于我的$scope.hideCompleted
和$scope.priority
例子,但我不知道如何采取下一步合并查询过滤集合时。我也修修补补周围有点与this package,因为我最终会希望能够过滤和排序许多标准,但我切换到我这里描述的概念之前,并没有得到它太远。
我很感激任何帮助。谢谢!
这看起来非常简单,并以较少的几行完成同样的事情。我在控制器的其他地方处理订阅,所以我可能需要做一些调整,但我认为我会更喜欢这种方法,因为它可以用较少的几行完成相同的事情。我还需要阅读$ meteorSubscribe和$ meteorCollection。 – aliigleed
太棒了,如果你遇到你的调整,不要犹豫,开始一个新的问题。此外,如果您不介意,请标记正确的答案,以便他人更容易找到;) –
是的,我计划一旦测试出来就标记出来。 :)今天早上我试了一下,看来它工作得很好,并且调整我现有的代码也不错。但是,我注意到这将在任何模型完全更改之前应用过滤器(即,在开始时返回无需执行任务,因为所有任务都分配了优先级,并且一旦客户机将优先级设置为输入表格)。 – aliigleed