这实际上是两个问题:
是否可以在Iron Router的waitOn选项中有条件地订阅集合?
是否可以在Router.go()中传入对象作为参数?
在我的应用中创建新帖子时,我正在尝试减少渲染视图的延迟。我尝试传入一个isNew属性作为Router.go()的参数,但没有运气:
// Router call after creating a new post
Router.go('postPage', {
_id: id,
isNew: true,
post: newPostObject
});
// router.js
Router.map(function() {
this.route('postsList', {
path: '/'
});
this.route('postPage', {
path: '/:_id',
waitOn: function() {
//This returns only _id for some reason.
console.log(this.params);
if (this.params.isNew != true) {
return [
Meteor.subscribe('singlePost', this.params._id),
Meteor.subscribe('images', this.params._id),
]
}
},
data: function() {
if (this.params.isNew == true) {
return this.params.post
else {
return Posts.findOne(this.params._id);
}
}
});
});
答案 0 :(得分:1)
经过一番挖掘,看起来像Iron Router支持选项哈希作为Router.go()方法中的第三个参数:
Router.go( 'postPage', {_id: id}, {isNew: true} );
要在路线中访问它,您可以使用this.options
。要在上面的示例中获取isNew
的值,请使用this.options.isNew
。
答案 1 :(得分:0)
您只能按this.params
访问动态路径细分。所以要让this.params.isNew
工作,你需要这样做。
this.route('postPage', {
path: '/:_id/:isNew',
waitOn: function() {}
...
});