我有一条路线
Router.route('/post/:_id', {
name: 'post',
template: 'post'
});
还有一个 helper
Template.post.helpers({
post: function () {
return Posts.findOne(this._id);
}
});
它找不到指定的帖子。但我想我以错误的方式获取了 id。我见过一些他们使用 session 的项目。这真的有必要吗?不是可以从路由器获取参数吗?
最佳答案
通常你会像这样在路由级别设置数据上下文:
Router.route("/post/:_id",{
name:"post",
template:"post",
waitOn:function(){
return this.subscribe("post",this.params._id);
},
data:function(){
return Posts.findOne(this.params._id);
}
});
在 RouteController
方法中,您可以使用 this.params.parameterName
访问 URL 参数。
然后在您的帖子模板中,您可以访问路由器设置的数据上下文,而无需专门的帮助程序。
<template name="post">
post id is {{_id}}
</template>
就帖子列表而言,您可以坚持相同的模式:
Router.route("/posts",{
name:"posts",
template:"posts",
waitOn:function(){
return this.subscribe("posts");
},
data:function(){
return {
posts:Posts.find()
};
}
});
<template name="posts">
{{#each posts}}
{{> postItem}}
{{/each}}
</template>
关于node.js - 使用 Meteor 和 iron 从路由器获取参数 :router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470267/