gpt4 book ai didi

javascript - 如何使用 iron-router 使用一个路由 Controller 渲染多个模板?

转载 作者:可可西里 更新时间:2023-11-01 10:43:20 25 4
gpt4 key购买 nike


背景:

我正在使用 meteor 和 iron-router 制作博客。我想为几个不同的“类别页面”使用一个 Controller ,这些页面过滤 yield 区域中的博客文章列表。

问题:

文章列表不会在 URL 更改时重新呈现。 IE。文章列表不是被动的。有趣的是,如果我导航回主页,则会显示正确的文章列表。

问题:

当我在类别路由 Controller 上的不同路由之间切换时,如何使该文章列表发生变化?


一些示例代码:

请注意整个项目的代码可用here .

这是我的路由 Controller :

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>

资源/更新:

最佳答案

文章列表没有改变,因为模板助手没有使用响应式(Reactive)数据源。您可以使用 RouteController.getParams 方法建立对路由参数的 react 依赖性,如下所示。

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

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

来自 Iron Router documentation :

Note: If you want to rerun a function when the hash changes you can do this:

// 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();

By default the router will follow normal browser behavior. If you click a link with a hash frag it will scroll to an element with that id. If you want to use controller.getParams() you can put that in either your own autorun if you want to do something procedural, or in a helper.

关于javascript - 如何使用 iron-router 使用一个路由 Controller 渲染多个模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com