在流星中,如何等待订阅并在模板“渲染”函数中访问它们?

In meteor, how to wait for subscriptions and access them in template `rendered` function?

我在我的应用程序中使用 FlowRouter 并且是 Meteor 的新手。我已经像这样订阅了我的 collection :

Template.PanelEditAbout.onCreated(function() {
    var self = this;
    self.autorun(function() {
        self.subscribe('pages', 'about');
    });
});

我正在尝试在 rendered 函数中使用订阅,但它不起作用:

Template.PanelEditAbout.rendered = function() {
    page = Pages.findOne({
        slug: 'about'
    });
}

如果我是对的,我必须等待订阅可用。我怎样才能做到这一点?我还需要在准备就绪时添加加载消息(或微调器)。我知道如何在 IronRouter 中执行此操作,但不知道如何使用 FlowRouter。

如果它是您的出版物名称,您可以在订阅页面期间使用 onReady。

Template.PanelEditAbout.rendered = function() {
  Meteor.subscribe("page", Yourslug,{
    onReady: function () { console.log("onReady And the Itemns actually Arrive",     arguments); },
    onError: function () { console.log("onError", arguments); }
  });
};

控制台日志只是一个例子。

永远不要订阅 onRendered,首先。尝试以下操作:

Template.PanelEditAbout.onCreated(function() {
  this.subscribe('pages', 'about');
});

Template.PanelEditAbout.onRendered(function() {
  let page = {};

  this.autorun(() => {
    if (this.subscriptionsReady()) {
      console.log('subs ready');
      page = Pages.findOne({
        slug: 'about'
      });
    }

    console.log(page);
  });
});