默认情况下,在调用this.render('template')时,基本模板不会呈现其他区域

时间:2014-11-18 10:54:57

标签: meteor iron-router

被困在这几个小时......当使用铁:路由器(1.0.1)并尝试在我的基本模板中呈现403访问禁止模板时,我有一种奇怪的行为:

我有一个使用铁路由器默认选项的默认模板集,例如

Router.configure({
      layoutTemplate: 'basicLayout',
      yieldRegions: {
        'header': {to: 'header'},
        'footer': {to: 'footer'}
      }
    });

Router.plugin('dataNotFound', {notFoundTemplate: 'notFound'});

这是我的模板:

<template name="basicLayout">
    <header>
        {{> yield 'header'}}
    </header>
    <div id="main">
        {{> yield}}
    </div>
    <footer class="sticky-footer">
        {{> yield 'footer'}}
    </footer>
</template>

一切都按预期工作,我可以通过正常方式定义路线,在此布局中渲染单个模板:

Router.route('ordersList', {
    path: '/orders',
    template: 'ordersList',
    waitOn: function () {
        Meteor.subscribe('Orders');
    }
});

然而,当我这样做时:

Router.onBeforeAction(function () {

        if (Roles.userIsInRole(Meteor.userId(), ['delivery'])) {
            this.next();
        } else {
            this.render('accessDenied');
        }
    }
    , {
        only: 'ordersList'
    });

它只在主区域中呈现模板,但不呈现页眉或页脚(它们在那里,但是为空)。

如果我使用

强制渲染区域
this.renderRegions();
this.render('accessDenied');

一切都按预期工作,但这对我来说似乎有点奇怪 - 多余 - 使用,它应该足够而不需要调用this.renderRegions()。这是一个错误还是一个功能?或者有什么我做错了吗?我看到很多只使用this.render('templateName')

的例子

0 个答案:

没有答案