铁路由器等待不等待收益率

时间:2015-01-08 15:33:04

标签: meteor iron-router

我注意到我的路由器定义不会等待订阅完成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。感谢

2 个答案:

答案 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的更多内容可以在铁路由器文档中找到:

https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#rendering-templates-into-regions-using-contentfor

此外,yieldTemplates现在已在更近期版本的Iron-Router中替换为yieldRegions(我使用的是1.0.7),但此处指定的模板仍不等待waitOn()功能。