如何在流星上使用 iron:router 路由之前传递会话?
How to pass a session befor routing with iron:router on meteor?
在我的 post_item.html 中,我得到了这一行:
<a href="{{pathFor 'postPage' _id=this._id}}" class="discuss btn">Discuss</a>
在我的 router.js:
Router.map(function() {
this.route('postPage',{path:'/posts/:_id',
beforeRoutingTo: function(id) {
console.log("hello!");
Session.set('currentPostId', id);
}
});
});
在我的post_page.js
Template.postPage.helpers({
currentPost: function() {
return Posts.findOne(Session.get('currentPostId'));
}
});
在我的post_page.html
<template name="postPage">
{{#with currentPost}}
{{> postItem}}
{{/with}}
</template>
我做错了什么?
如何将 ID 传递给新的 'page' 并显示结果?
不确定为什么需要会话,但您的路线看起来不对。尝试以下操作:
Router.map(function() {
this.route('postPage',{path:'/posts/:_id',
onBeforeAction: function() {
console.log("hello!");
Session.set('currentPostId', this.params._id);
}
});
});
我假设您正在使用本书 'Discover Meteor' 编写流星教程。我遇到了同样的问题,但是,我能够在不使用会话的情况下解决它。如果你使用 iron router.
,你就不再需要任何助手了
client/router.js:
Router.map(function() {
this.route('/post/:_id', function () {
var item = Posts.findOne({_id: this.params._id});
this.render('postItem', {data: item});
},
{
name: 'post.show'
});
});
client/posts/post_item.html
<a href="{{pathFor route='post.show'}}" class="discuss btn">Discuss</a>
如您所见,在 router.js
中,id 是从 url 中解析出来的。另外,我们在 'posts.show' 之后命名 /post/:id
路由,我们可以从视图中获取 url引用该名称:{{pathFor route='post.show'}}
在我的 post_item.html 中,我得到了这一行:
<a href="{{pathFor 'postPage' _id=this._id}}" class="discuss btn">Discuss</a>
在我的 router.js:
Router.map(function() {
this.route('postPage',{path:'/posts/:_id',
beforeRoutingTo: function(id) {
console.log("hello!");
Session.set('currentPostId', id);
}
});
});
在我的post_page.js
Template.postPage.helpers({
currentPost: function() {
return Posts.findOne(Session.get('currentPostId'));
}
});
在我的post_page.html
<template name="postPage">
{{#with currentPost}}
{{> postItem}}
{{/with}}
</template>
我做错了什么? 如何将 ID 传递给新的 'page' 并显示结果?
不确定为什么需要会话,但您的路线看起来不对。尝试以下操作:
Router.map(function() {
this.route('postPage',{path:'/posts/:_id',
onBeforeAction: function() {
console.log("hello!");
Session.set('currentPostId', this.params._id);
}
});
});
我假设您正在使用本书 'Discover Meteor' 编写流星教程。我遇到了同样的问题,但是,我能够在不使用会话的情况下解决它。如果你使用 iron router.
,你就不再需要任何助手了client/router.js:
Router.map(function() {
this.route('/post/:_id', function () {
var item = Posts.findOne({_id: this.params._id});
this.render('postItem', {data: item});
},
{
name: 'post.show'
});
});
client/posts/post_item.html
<a href="{{pathFor route='post.show'}}" class="discuss btn">Discuss</a>
如您所见,在 router.js
中,id 是从 url 中解析出来的。另外,我们在 'posts.show' 之后命名 /post/:id
路由,我们可以从视图中获取 url引用该名称:{{pathFor route='post.show'}}