被困在这几个小时......当使用铁:路由器(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')