我使用iron:router subscription hook在meteor.js app的每个页面中加载所需的数据(使用订阅管理器):
subscriptions: function() {
return subman.subscribe("ElementsCurrentLang", Session.get('currentLang'), ['home']);
}
我还想在后台预加载其他订阅(当前页面中不是所有订阅,但可能是当前页面中需要的部分订阅);我试图插入
globalSubs = {};
Meteor.subscribe("elementsCurrentLang", Session.get('currentLang'), function() {
globalSubs.globalElements = true;
});
Meteor.subscribe("municipalitiesGlobal", Session.get('currentLang'), function() {
globalSubs.globalMunicipalities = true;
});
Meteor.subscribe("culturalGoodsGlobal", Session.get('currentLang'), function() {
globalSubs.globalCulturalGoods = true;
});
在另一个文件subscriptions.js中添加了一个类似以下的测试,以避免重新订阅已加载的订阅:
subscriptions: function() {
if (!globalSubs.globalElements) return subman.subscribe("neededElementsCurrentLang", Session.get('currentLang'), ['progetto']);
},
但这不起作用,因为全局订阅是在页面订阅之前加载而不是在后台加载;
是否可以在后台加载3个全局订阅,避免应用等待加载它们(它必须只等待当前路由的订阅挂钩)?
答案 0 :(得分:0)
Router.configure({
layoutTemplate: 'layout',
waitOn: function(){
return [Meteor.subscribe('posts'),Meteor.subscribe('colors'),Meteor.subscribe('ads')];},
yieldTemplates:{
'header': {to: 'header'},
'menu': {to: 'menu'},
'footer': {to:'footer'}
}
});
怎么样。