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

问题描述 投票:0回答:1

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

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

meteor iron-router
1个回答
1
投票

当你Template.instance().subscriptionsReady()时使用subscribe in a template instance。但你是subscribing in the router

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

© www.soinside.com 2019 - 2024. All rights reserved.