即使我正在使用waitOn,集合也没有按时呈现?

时间:2015-02-10 16:10:36

标签: meteor

这是代码:

Meteor.publish('singleDocument', function(documentId) {
  return Documents.find(documentId);
});

this.route("documentPage", {
  path: "/documents/:_id",
  waitOn: function() {
    return Meteor.subscribe("singleDocument", this.params._id);
  },
  data: function() {
    return Documents.findOne(this.params._id);
  }
});

Template.documentPage.rendered = function() {
    Tracker.autorun(function() {
       console.log(this.content);
    });
};

正如你所看到的,我已经完成了所有设置,我正在等待waitOn的收藏。但console.log(this.content);仍然会返回undefined,就像集合尚未加载一样。

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

自动运行中的

this不会引用用于呈现模板的数据上下文。在渲染函数中,在自动运行功能之外(您根本不需要使用自动运行),您可以使用this.data来引用用于渲染模板的数据上下文,因此请尝试以下操作:

Template.documentPage.rendered = function() {
    console.log(this.data);
};

根据以下评论进行更新:

您应该能够使用Template.currentData来监听数据上下文中的更改:

Template.documentPage.rendered = function() {
    Tracker.autorun(function(){
        console.log(Template.currentData())
    })
};