这是代码:
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
,就像集合尚未加载一样。
可能是什么问题?
答案 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())
})
};