2016-11-21 108 views
0

什么是处理订阅数据的最佳方式。例如,你有一个游戏,你必须先创建角色,然后才能做任何其他事情。目前我认为我可以尝试使用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

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

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

loading挂钩,同时等待订阅准备自动运行。

您可能会感兴趣my post on building a clean router.js file有用。

+0

链接作品很好谢谢 – Kani