假设我们需要在视图上显示已过滤的任务,第一步我们获得了所有购买发布/订阅的任务列表:
发布:
Meteor.publish("tasks", function(options){
return Tasks.find(options);
});
订阅:
var allTasks = $meteor.collection(Tasks).subscribe('tasks', {});
现在,让我们说我需要在$ scope中查看具有“活动”功能的任务。变量设置为true。
这样的事情:
$scope.active_tasks = getFilteredTasks(allTasks, {active: true})
如何替换getFilteredTasks(allTasks,{active:true})以获取只有active == true变量的任务?
我知道我们可以设置'选项'订阅以下任务时:
{active: true}
但解决问题并没有帮助。目标是只订阅一次,然后使用过滤器仅显示部分任务。
我还没有完成Angular-Meteor tutorial,所以稍后可能会解释,如果你能指出我正确的教程,它将大大加快我的学习。
提前致谢。
答案 0 :(得分:2)
行。看起来解决方案是在Angular方面。 所以在控制器中我们得到了所有的任务:
$scope.active_tasks = $meteor.collection(Tasks);
在观看方面,我们过滤它们:
<input ng-model="freeText">
<tr ng-repeat="task in active_tasks | filter:freeText ">
<td>{{ task }}</td>
</tr>
:)
答案 1 :(得分:1)
@pumych解决方案是有效的。 你也可以使用
$scope.$meteorSubscribe ('tasks');
$scope.activeTasks = $meteor.collection (function (){
// active tasks will only be the filtered result
return Tasks.find (active: true) ;
});
在此处了解Angular Meteor中的数据流https://medium.com/@tally_b/coll-pub-sub-with-angular-meteor-cb13fe48f5701。查看示例和github代码以获取更多详细信息。