模板无法使用Iron渲染:路由器

时间:2014-12-17 02:48:44

标签: javascript meteor iron-router

我正在尝试在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');
    }
});

我不确定我在这里做错了什么。

提前感谢您的帮助!!!

1 个答案:

答案 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移动到共享客户端/服务器空间,例如,在项目根目录中。