我在onRendered
事件中有一些功能,我想在每个渲染上运行。
Template.DashboardCoachPost.onRendered(function () {
var post, postId;
this.autorun(function() {
postId = Router.current().params.query.p;
reactive.isSubmitted.set(false);
if (Template.instance().subscriptionsReady()) {
post = Posts.find({_id: postId}).fetch()[0];
reactive.post.set(post);
if (post) {
reactive.isSubmitted.set(true);
}
}
});
});
在我的RouterController中我有:
DashboardCoachPostController = RouteController.extend({
subscriptions: function() {
this.postId = Router.current().params.query.p;
if (this.handle) {
this.handle.stop();
}
if (this.postId) {
this.handle = this.subscribe('posts', { postId: this.postId });
}
}
});
和我的路线:
Router.route('/dashboard/coach/post', {
name: 'dashboardCoachPost',
controller: DashboardCoachPostController,
where: 'client',
layoutTemplate: 'LegalLayout'
});
我有一种感觉,我没有正确处理订阅,但我无法弄清楚如何没有这种方法得到我的帖子。
当你Template.instance().subscriptionsReady()
时使用subscribe in a template instance。但你是subscribing in the router。
您必须选择是否让模板实例处理订阅或路由器。