如何在 Meteor / Iron Router 中处理订阅
How to handle subscription in Meteor / Iron Router
处理基于订阅的数据的最佳方式是什么。例如,您有一款游戏,您必须先创建角色,然后才能做任何其他事情。目前我认为我可以尝试使用 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' });
问题是在加载集合之前,游戏模板将显示。有这样更好的方法吗?另一个问题是,当路由需要一个字符时,它会抛出异常,直到加载订阅。
只需在加载订阅时使用加载挂钩。
loading(){
this.render('myLoadingTemplate');
}
loading
挂钩在等待订阅准备就绪时自动 运行。
您可能会发现 my post on building a clean router.js file 有用。
处理基于订阅的数据的最佳方式是什么。例如,您有一款游戏,您必须先创建角色,然后才能做任何其他事情。目前我认为我可以尝试使用 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' });
问题是在加载集合之前,游戏模板将显示。有这样更好的方法吗?另一个问题是,当路由需要一个字符时,它会抛出异常,直到加载订阅。
只需在加载订阅时使用加载挂钩。
loading(){
this.render('myLoadingTemplate');
}
loading
挂钩在等待订阅准备就绪时自动 运行。
您可能会发现 my post on building a clean router.js file 有用。