首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使我使用的是waitOn,也没有按时呈现集合?

即使我使用的是waitOn,也没有按时呈现集合?
EN

Stack Overflow用户
提问于 2015-02-10 16:10:35
回答 1查看 29关注 0票数 0

这是代码:

代码语言:javascript
复制
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,好像还没有加载集合一样。

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-10 16:53:55

自动运行中的this不引用用于呈现模板的数据上下文。在呈现的函数中,在autorun函数之外(您根本不需要使用autorun ),您可以使用this.data引用用于呈现模板的数据上下文,因此尝试如下:

代码语言:javascript
复制
Template.documentPage.rendered = function() {
    console.log(this.data);
};

根据下面的评论更新:

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

代码语言:javascript
复制
Template.documentPage.rendered = function() {
    Tracker.autorun(function(){
        console.log(Template.currentData())
    })
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28436333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档