如何处理Meteor / Iron路由器中的订阅

时间:2016-11-21 22:45:22

标签: meteor iron-router subscription

最好的办法是处理基于订阅的数据。例如,你有一个游戏,你必须首先创建角色,然后才能做任何其他事情。目前,我可以尝试使用onBeforeAction过滤器来处理它。所以我为每个需要角色的路线都有一个全局控制器。

DefaultController = LayoutController.extend({
  onBeforeAction : function() {
    var currentCharacter = Character.getCurrent.call({});
    if(currentCharacter === undefined) {
        this.render('CharacterCreate');
    } else {
        this.next();
    }
 },
 waitOn() {
    this.subscribe('characters.owned');
 }
});

你有这样的路线:

Router.route('/game', { controller: 'DefaultController' });

问题是在加载集合之前,将显示游戏模板。有这样一个更好的方法吗?当路由需要一个字符时,另一个问题是它会在加载订阅之前抛出异常。

1 个答案:

答案 0 :(得分:1)

只需在加载订阅时使用加载挂钩。

loading(){
  this.render('myLoadingTemplate');
}

在等待订阅准备就绪时自动运行loading挂钩。

您可能会发现my post on building a clean router.js file有用。