onRendered数据不会出现,除非我按回按钮

时间:2018-01-04 00:54:19

标签: meteor iron-router

我在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'
});

我觉得我没有正确处理订阅,但我无法弄清楚如何在没有这种方法的情况下收到我的帖子。

1 个答案:

答案 0 :(得分:1)

subscribe in a template instance时会使用

Template.instance().subscriptionsReady()。但你是subscribing in the router

您必须选择是否让模板实例处理订阅或路由器。