我注意到我的路由器定义不会等待订阅完成yieldTemplates,但会等待主模板。有没有办法让yield模板也等待waitOn
?
路线:
Router.route('/', {
template : 'main',
layoutTemplate: 'appLayout',
waitOn: function () {
// return one handle, a function, or an array
return [Meteor.subscribe('userInformation'), Meteor.subscribe('projects')];
},
data: function () {
return Meteor.user();
},
action: function () {
if (this.ready()) {
this.render();
} else {
this.render('login');
}
},
yieldTemplates: {
'dash': {to: 'side'}
}
});
我在我的破折号模板中使用数据属性,最初它返回undefined。感谢
答案 0 :(得分:1)
我认为语法已被弃用,文档使用此语法来定义yield模板:
this.render('dash', {to: 'side'});
使用此语法从未遇到waitOn
问题,请试一试?
答案 1 :(得分:1)
不要在路由器中使用yieldTemplates
,而是尝试使用contentFor
模板/帮助器将内容从主模板渲染到布局区域。
首先从yieldTemplates
移除Router.route
。然后,在主模板中添加{{> contentFor}}
模板:
<template name="main">
{{> contentFor region="side" template="dash"}}
</template>
或者,您可以使用contentFor
的帮助版本:
<template name="main">
{{#contentFor 'side'}}
{{> dash}}
<!-- and anything else you want to include -->
{{/contentFor}}
</template>
这是一个MeteorPad,它证明了这一点: http://meteorpad.com/pad/QCo3JsFLr6R438izF/Leaderboard
有关contentFor
的更多内容可以在铁路由器文档中找到:
此外,yieldTemplates
现在已在更近期版本的Iron-Router中替换为yieldRegions
(我使用的是1.0.7),但此处指定的模板仍不等待waitOn()
功能。