我正在使用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/hello
或localhost:3000/
),无论它是什么,都不会呈现任何模板。它只显示标题“Welcome to Meteor!”就是这样。
当我写任何其他未声明的地址,例如localhost:3000/abc
时,它会显示我:
欢迎来到流星!糟糕,看起来客户端没有路由或 url的服务器:“http://localhost:3000/abc。”
所以它肯定是在javascript文件中做了一些事情,因为它识别它应该知道的模板,但是当写出正确的地址时,它什么都没有显示。
我尝试查看其他解决方案,检查包名是“iron:router”而不是“iron-router”,以及其他解决方案,但没有任何效果。请帮帮我......
编辑:根据要求,这是项目https://github.com/yokhen/test2
的存储库答案 0 :(得分:2)
首先我必须添加EJSON包,因为铁:路由器没有看到它(虽然我在Windows上测试它,也许这就是我遇到这个问题的原因)
meteor add ejson
解决了它
您的项目目录应如下所示:
Router.route('/', function () {
this.render('Home');
});
Router.route('/items');
Template.items.helpers({
});
Template.items.events({
});
Template.Home.helpers({
});
Template.Home.events({
});
<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中生成其他模板。