Iron-Router:显示列表和单篇文章的一种路由

Iron-Router: One route for showing list and single article

目前我正在使用两种方式来显示列表或文章内容。所以我得到了一条路线 articles 和一条路线 article 因为有两个模板。

但是不是可以把所有的东西放在一个路由里吗?

我觉得第一个路由没有意义,所以应该只有'/article/:id',如果没有给出id,应该显示列表。

路线

Router.configure({
    layoutTemplate: 'layout',
});
Router.route('/articles', {
    name: 'articles',
    yieldTemplates: {
        'articleList':      { to: 'content' } 
    }
});
Router.route('/article/:_id', {
    name: 'article',
    yieldTemplates: {
        'contentPage':      { to: 'content' } 
    },
    onBeforeAction: function () { Session.set('articleID', this.params._id); this.next(); }
});

模板

<template name="layout">
    {{ > header}}
    {{ > yield 'content'}}
    {{ > footer}}
</template>

<template name="articles">
    <ul class="list">
        {{#each list}}
            <li><a href="/article/{{_id}}">{{title}}</a></li>
        {{/each}}
    </ul>
</template>

<template name="article">
    <h1 id="element" data-id="{{article._id}}">{{article.title}}</h1>
    <p>{{article.content}}</p>
</template>

这是可能的,但我认为您混淆了关于什么是路线的一些术语。以下代码:

Router.route('/article', {
    ...
})

Router.route('/article/:_id', {
    ...
})

定义了两条路由,它们共享相同的基本路径:'/article'。

Here is a meteorpad showing this in action.