为什么在渲染模板后路由到主页会发生变化?

时间:2015-05-15 09:37:17

标签: meteor iron-router

我刚刚开始使用iron:router包。这些是我的项目文件:

路由器example.js

    if (Meteor.isClient) {
    //some code
    }
    if (Meteor.isServer) {
   //some code
    }
    Router.route('/', function(){
        this.render('Home');
    });
    Router.route('/hello', function(){
        this.render('hello');
    });
    Router.route('/items', function(){
        this.render('Items');
    });
    Router.route('/serverItem', function(){
        var req = this.request;
        var res = this.response;
        res.end('Hello from the server\n');
    }, {where: 'server'});

路由器example.html的

<body>
<h1>Welcome to Meteor!</h1>
<ol>
    <li><a href="{{pathFor '/'}}">This routing doesn't work</a></li>
    <li><a href="{{pathFor 'hello'}}">Hello Template</a></li>
    <li><a href="{{pathFor 'items'}}">Items Template</a></li>
    <li><a href="{{pathFor 'serverItem'}}">Server Item</a></li>
    <li><a href="http://localhost:3000/">Hard link works</a></li>
</ol>
</body>

templates.html

<template name = "Home">
<h2>Default: '/' brings you here</h2>
<p>This is the home template</p>
</template>

<template name = "Items">
<h2>This is the items template. Items Page linked using pathFor helper</h2>
</template>

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

所以在主页&#34; localhost:3000&#34;,&#34; Home&#34;默认情况下,模板会按预期呈现。点击其他链接后: 你好模板, 物品模板等 这些已呈现,但使用{{pathFor&#39; /&#39;}}帮助程序指定的主页链接停止工作,我必须使用硬链接(localhost:3000)返回主页。将鼠标悬停在该链接上会显示它指向不同的路径。

那我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以指定路线名称以使用{{pathFor 'routeName'}}

Router.route('/', { name: 'home', template: 'Home' })

点击此处查看完整示例https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-specific-options

  

如果没有提供名称,路由器会根据路径

猜出一个名称