铁:路由器没有渲染模板

时间:2015-09-26 17:02:16

标签: javascript templates meteor render iron-router

我正在使用iron:router包处理流星。 我的javascript文件包含:

Router.route('/', function () {
  this.render('home');
}, {
  name: 'home'
});

Router.route('/hello', function () {
  this.render('hello');
});

我的html文件包含:

<head>
  <title>test</title>
</head>

<body>
  <h1>Welcome to Meteor!</h1>

</body>

<template name="hello">
  <button>Click Me</button>
  <p>You've pressed the button {{counter}} times.</p>
</template>

<template name="home">
  <h2>Home</h2>
  <p>You are on the home screen.</p>
</template>

无论我在the tutorial中指定的内容(localhost:3000/hellolocalhost:3000/),无论它是什么,都不会呈现任何模板。它只显示标题“Welcome to Meteor!”就是这样。

当我写任何其他未声明的地址,例如localhost:3000/abc时,它会显示我:

  

欢迎来到流星!糟糕,看起来客户端没有路由或   url的服务器:“http://localhost:3000/abc。”

所以它肯定是在javascript文件中做了一些事情,因为它识别它应该知道的模板,但是当写出正确的地址时,它什么都没有显示。

我尝试查看其他解决方案,检查包名是“iron:router”而不是“iron-router”,以及其他解决方案,但没有任何效果。请帮帮我......

编辑:根据要求,这是项目https://github.com/yokhen/test2

的存储库

2 个答案:

答案 0 :(得分:2)

首先我必须添加EJSON包,因为铁:路由器没有看到它(虽然我在Windows上测试它,也许这就是我遇到这个问题的原因)

meteor add ejson解决了它

您的项目目录应如下所示:

enter image description here

Routes.js

Router.route('/', function () {
  this.render('Home');
});

Router.route('/items');

test2.js

Template.items.helpers({

});

Template.items.events({

});

Template.Home.helpers({

});

Template.Home.events({

});

test2.html

<template name="Home">
    <h1>Simplest template home ever</h1>
</template>

<template name="items">
    <h1>Simplest home items template</h1>
</template>

答案 1 :(得分:1)

创建一个'lib'文件夹并将代码放在那里。

lib/router.js

您需要将{{> yield}}放在身体标签内。

<body>
  <h1>Welcome to Meteor!</h1>
    {{> yield}} 
</body>

iron router guide还将向您展示如何设置layoutTemplate,可用于在所有模板中保持一致的布局。您将放置{{&gt;在布局模板中使用} {}并使用Router.configure函数在layoutTemplate中生成其他模板。