我有一个使用两个集合的简单列表和详细信息视图。 当我导航回列表视图时,Meteor会删除添加到详细信息集合中的单个文档,并撤消对其他集合的更改。
我希望这些数据保持不变,以便客户端不必继续重新加载...
“联盟”和“排名”订阅都在导航回到根目录时“撤消”。联盟和联赛路线都使用'周'Mongo系列。导航到联盟细节时,我添加到单个文档。导航到细节工作正常...当我导航回列表时,我松开了收集数据。
我需要所有这些数据“缓存”,显然不能正确处理它......
Router.map(function () {
this.route('leagueList', {
path: '/'
});
this.route('league', {
path: '/league/:league',
template: 'standings',
waitOn: function () {
console.log(this.params.league);
return [Meteor.subscribe('league', this.params.league),
Meteor.subscribe('standings', this.params.league) ];
},
data: function () {
return {theLeague: Leagues.findOne({league: this.params.league}),
theStandings: Standings.findOne()};
}
});
});
服务器:
Meteor.publish('leagues', function(){
console.log('all league names sent');
return Leagues.find({}, {fields: {weeks: 0}});
});
Meteor.publish('league', function(theLeague){
console.log('sending weeks detail for: ' + theLeague);
return Leagues.find({league: theLeague});
});
Meteor.publish('standings', function(theLeague){
console.log('standings: ' + theLeague);
var file = Leagues.findOne({league: theLeague}).weeks[0].file;
return Standings.find({file: file});
});
客户端:
Leagues = new Meteor.Collection('weeks');
Standings = new Meteor.Collection('details');
Meteor.subscribe('leagues');
答案 0 :(得分:1)
铁路由器正在进行中以允许(并优化)此功能(当您路由到另一个页面时不会立即停止订阅)。请参阅sub-manager分支。
但是如果您在waitOn调用之外创建订阅,我认为订阅永远不会停止。例如,在下面的代码中,路由a
和c
将等待接收initialData(将在用户加载页面时直接获取(即使它使用路由{{1即使您离开,例如路由b
,它的订阅也永远不会停止。但是,如果您需要在路径中使用某些参数(我可能可能使用a
修复某些参数,我认为您不能使用此方法,但它会很难看。)
setInterval