我正在尝试在Iron:Router中设置layoutTemplate。我已经阅读了我在自己的项目中实现的文档(以减少重复代码)。但是有些事情是错的。内部模板是渲染但不是布局。
布局文件位于'client / templates / defaultlayout.html'
<template name="defaultlayout">
<head>
<title>Grocery Getter</title>
</head>
<div class="container">
<header>
{{> yield "headerButtons"}}
<h1>{{title}}</h1>
{{> loginButtons}}
{{> yield "headertextinput"}}
</header>
<body>
{{> yield}}
</body>
</div>
</template>
以下是我要填充'{{&gt; yield}}'部分位于'client / templates / login.html':
<template name="login">
<h4>Please login or create an account.</h4>
</template>
这是我的Iron:位于'client / routes.js'的路由器:
Router.configure({
layoutTemplate: 'defaultlayout'
});
Router.route('/',function()
{
if(!Meteor.user())
{
this.redirect('/login');
}
else
{
this.redirect('/householdsignup');
}
});
Router.route('/login',function()
{
if(!Meteor.user())
{
this.render('login', function(){
data: 'Grocery Getter'
});
}
else
{
this.redirect('/householdsignup');
}
});
我不确定我在这里做错了什么。
提前感谢您的帮助!!!
答案 0 :(得分:0)
您的布局对我来说看起来并不合适。据我所知,模板不具备头脑。你不能从流星那里得到错误吗?
请改为尝试:
main.html中:
<head>
<title>Grocery Getter</title>
</head>
defaultlayout.html:
<template name="defaultlayout">
<div class="container">
<header>
{{> yield "headerButtons"}}
<h1>{{title}}</h1>
{{> loginButtons}}
{{> yield "headertextinput"}}
</header>
{{> yield}}
</div>
</template>
此外,您可能希望将routes.js移动到共享客户端/服务器空间,例如,在项目根目录中。