【发布时间】:2015-02-22 17:48:33
【问题描述】:
我有一条路线,我打了很多次。我必须订阅两个集合才能拥有所有数据,这是一个快照:
var one = new Blaze.ReactiveVar(false);
var two = new Blaze.ReactiveVar(false);
this.route('stopIndex', {
path: '/stop/:section/:stop_id',
waitOn: function() {
Meteor.call('getTripIdsForStop', {
stop_id: this.params.stop_id,
from: fromNow(),
to: toMax(),
db: prefix
}, function(err, ids) {
DEBUG && console.log('TRIP_IDS:', ids);
Meteor.subscribe(prefix + '_trips', {
trip_id: {$in: ids}
}, function() {
one.set(true);
});
Meteor.subscribe(prefix + '_stop_times', {
trip_id: {$in: ids}
}, function() {
two.set(true);
});
});
return [
function () { return one.get(); },
function () { return two.get(); }
];
},
我第一次调用路由时,一切正常。第二次,one 和 two 变量已设置为 true,因此 waitOn 不会等待,我会在模板上收到 no data 消息几秒钟,直到集合响应。我试过把waitOk 方法的第一行放在上面:
one.set(false);
two.set(false);
但这会使waitOn 永远等待。我做错了什么或错过了什么?感谢您的帮助。
【问题讨论】:
标签: meteor iron-router meteor-blaze