Meteor 的 iron:router loadingTemplate 未呈现
Meteor's iron:router loadingTemplate not rendered
我有以下代码:
Router.configure({
layoutTemplate: 'commonTemplate',
loadingTemplate: 'loadingApp'
});
Router.route('/configuration', {
name:'configuration',
template:'configuration',
onBeforeAction: function(){
this.layout(null);
if (Session.get('appReady')){
this.next();
} else {
console.log("loading app...");
this.render('loadingApp');
}
}
});
"正在加载应用..." 正确显示在控制台上。
然而,在那段时间(等待会话变量),没有显示加载模板(既不来自 Router.configure;也不来自 this.render)。
此外,当会话变量为真时,配置 模板会正确呈现。
这是 iron:router 错误还是我做错了什么?
你的代码对我有用,可能问题是你的加载模板没有正确显示加载内容。我用 https://atmospherejs.com/sacha/spin 包中的加载模板测试了代码并且工作正常。
你可以从 atmospherejs 安装包 sacha:spin 并配置 Iron Router 以使用加载模板,这个包很容易使用,你必须在你想要加载的地方使用模板 'loading'动画。
1) meteor add sacha:spin
2) 在您的路由器文件中:
Router.configure({
loadingTemplate: 'loading'
});
Router.route('/test', {
name: 'test',
template: 'test',
onBeforeAction : function()
{
this.layout(null);
if (Session.get('appReady')){
this.next();
} else {
console.log("loading app...");
this.render('loading');
}
}
}
);
我有以下代码:
Router.configure({
layoutTemplate: 'commonTemplate',
loadingTemplate: 'loadingApp'
});
Router.route('/configuration', {
name:'configuration',
template:'configuration',
onBeforeAction: function(){
this.layout(null);
if (Session.get('appReady')){
this.next();
} else {
console.log("loading app...");
this.render('loadingApp');
}
}
});
"正在加载应用..." 正确显示在控制台上。 然而,在那段时间(等待会话变量),没有显示加载模板(既不来自 Router.configure;也不来自 this.render)。 此外,当会话变量为真时,配置 模板会正确呈现。
这是 iron:router 错误还是我做错了什么?
你的代码对我有用,可能问题是你的加载模板没有正确显示加载内容。我用 https://atmospherejs.com/sacha/spin 包中的加载模板测试了代码并且工作正常。
你可以从 atmospherejs 安装包 sacha:spin 并配置 Iron Router 以使用加载模板,这个包很容易使用,你必须在你想要加载的地方使用模板 'loading'动画。
1) meteor add sacha:spin
2) 在您的路由器文件中:
Router.configure({
loadingTemplate: 'loading'
});
Router.route('/test', {
name: 'test',
template: 'test',
onBeforeAction : function()
{
this.layout(null);
if (Session.get('appReady')){
this.next();
} else {
console.log("loading app...");
this.render('loading');
}
}
}
);