Javascript 如何使用iron router使用一个路由控制器呈现多个模板? 背景:

Javascript 如何使用iron router使用一个路由控制器呈现多个模板? 背景:,javascript,mongodb,meteor,iron-router,Javascript,Mongodb,Meteor,Iron Router,我正在使用meteor和iron路由器制作博客。我想为几个不同的“分类页面”使用一个控制器,这些页面在收益区域中过滤博客文章列表 问题是: URL更改时,文章列表不会重新提交。也就是说,物品清单不是被动的。有趣的是,如果我导航回主页,就会显示正确的文章列表 问题是: 当我在类别路由控制器上的不同路由之间更改时,如何更改文章列表 一些示例代码: 请注意,整个项目的代码是可用的 这是我的路线控制员: CategoryController = RouteController.extend({

我正在使用meteor和iron路由器制作博客。我想为几个不同的“分类页面”使用一个控制器,这些页面在收益区域中过滤博客文章列表

问题是: URL更改时,文章列表不会重新提交。也就是说,物品清单不是被动的。有趣的是,如果我导航回主页,就会显示正确的文章列表

问题是: 当我在类别路由控制器上的不同路由之间更改时,如何更改文章列表


一些示例代码: 请注意,整个项目的代码是可用的

这是我的路线控制员:

CategoryController = RouteController.extend({
    action: function(){
        this.render();
    },
    template: 'category',
    data: function(){
        return {category: this.params.category};
    }
});

CategoryController.helpers({
    articles: function(){
        return Articles.find({category: this.params.category});
    }
});
这是它正在渲染的模板:

<template name='category'>
    <div class="container">
        <h2>{{category}}:</h2>
        <ul>
            {{#each articles}}
                <li>
                {{#linkTo route="article.show"}}
                    {{title}}
                {{/linkTo}} 
                </li>
            {{/each}}
        </ul>
    </div>
</template>

{{category}}:
    {{#每篇文章}
  • {{{#linkTo route=“article.show”} {{title}} {{/linkTo}
  • {{/每个}}

资源/更新:
  • 阅读。非常有趣,但是在不同的地方尝试了一些
    Deps.autorun
    s之后,我认为这不是答案
  • 当前正在尝试使不同的“类别”路由从控制器继承

文章列表不会更改,因为模板帮助程序未使用反应式数据源。您可以使用
RouteController.getParams
方法建立对路由参数的反应式依赖关系,如下所示

CategoryController.helpers({
    articles: function(){
        var controller = this;
        var params = controller.getParams();

        return Articles.find({category: params.category});
    }
});
发件人:

注意:如果要在散列更改时重新运行函数,可以执行以下操作 这:

默认情况下,路由器将遵循正常的浏览器行为。如果你 单击带有散列框的链接,它将滚动到具有该散列框的元素 如果你想使用controller.getParams(),你可以把它放在 如果你想做一些程序性的事情,你可以自己自动运行,或者 助手

// get a handle for the controller.
// in a template helper this would be
// var controller = Iron.controller();
var controller = this;

// reactive getParams method which will invalidate the comp if any part of the params change
// including the hash.
var params = controller.getParams();