iron:router 未呈现模板
iron:router not rendering template
我正在使用 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/
),它都不会呈现任何模板。它只是显示 header "Welcome to Meteor!" 而已。
当我写任何其他 non-declared 地址时,例如 localhost:3000/abc
,它会显示:
Welcome to Meteor! Oops, looks like there's no route on the client or
the server for url: "http://localhost:3000/abc."
所以它肯定在 javascript 文件中做了一些正确的事情,因为它识别了它应该知道的模板,但仍然在写入正确的地址时,它什么也没显示。
我尝试查看其他解决方案,检查包名称是 "iron:router" 而不是 "iron-router",以及其他解决方案,但没有任何效果。请帮助我...
编辑:根据要求,这里是项目的存储库 https://github.com/yokhen/test2
创建一个 'lib' 文件夹并将代码放入其中。
lib/router.js
您需要将 {{> yield}}
放入 body 标签中。
<body>
<h1>Welcome to Meteor!</h1>
{{> yield}}
</body>
iron router guide 还将向您展示如何设置可用于在所有模板中保持一致布局的布局模板。您将把 {{> yield}} 放在布局模板中,并使用 Router.configure
函数在布局模板中生成其他模板。
首先我不得不添加 EJSON 包,因为 iron:router 没有看到它(虽然我在 Windows 上测试它,也许这就是我遇到这个问题的原因)
meteor add ejson
解决了
您的项目目录应如下所示:
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>
我正在使用 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/
),它都不会呈现任何模板。它只是显示 header "Welcome to Meteor!" 而已。
当我写任何其他 non-declared 地址时,例如 localhost:3000/abc
,它会显示:
Welcome to Meteor! Oops, looks like there's no route on the client or the server for url: "http://localhost:3000/abc."
所以它肯定在 javascript 文件中做了一些正确的事情,因为它识别了它应该知道的模板,但仍然在写入正确的地址时,它什么也没显示。
我尝试查看其他解决方案,检查包名称是 "iron:router" 而不是 "iron-router",以及其他解决方案,但没有任何效果。请帮助我...
编辑:根据要求,这里是项目的存储库 https://github.com/yokhen/test2
创建一个 'lib' 文件夹并将代码放入其中。
lib/router.js
您需要将 {{> yield}}
放入 body 标签中。
<body>
<h1>Welcome to Meteor!</h1>
{{> yield}}
</body>
iron router guide 还将向您展示如何设置可用于在所有模板中保持一致布局的布局模板。您将把 {{> yield}} 放在布局模板中,并使用 Router.configure
函数在布局模板中生成其他模板。
首先我不得不添加 EJSON 包,因为 iron:router 没有看到它(虽然我在 Windows 上测试它,也许这就是我遇到这个问题的原因)
meteor add ejson
解决了
您的项目目录应如下所示:
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>