Meteor删除新路线上的集合

时间:2014-04-17 20:10:39

标签: meteor iron-router

我有一个使用两个集合的简单列表和详细信息视图。 当我导航回列表视图时,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');

1 个答案:

答案 0 :(得分:1)

铁路由器正在进行中以允许(并优化)此功能(当您路由到另一个页面时不会立即停止订阅)。请参阅sub-manager分支。

但是如果您在waitOn调用之外创建订阅,我认为订阅永远不会停止。例如,在下面的代码中,路由ac将等待接收initialData(将在用户加载页面时直接获取(即使它使用路由{{1即使您离开,例如路由b,它的订阅也永远不会停止。但是,如果您需要在路径中使用某些参数(我可能可能使用a修复某些参数,我认为您不能使用此方法,但它会很难看。)

setInterval