Collection无法在Template.mytemplate.rendered中获取数据

时间:2013-03-27 10:07:56

标签: meteor

我无法在Template.my.rendered中获取数据,但在Chrome的控制台中可以。 这是我的代码:

HTML:

<Template name="moitorContent">
  <div class="tab-pane active" id="1">
      ........
  </div>
</Template>

JS:


    Template.moitorContent.rendered = function(){
         if(!this._rendered) {
          this._rendered = true;
          console.log(Svse.find({}).fetch());
        }
    }

使用localhost:3000打开chrome时,

控制台信息为“[]”

但是在chrome的控制台中输入

 console.log(Svse.find({}).fetch()); 

console.log可以获取数据

像这样: enter image description here

对我做错了什么的想法?

任何建议都赞赏!

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您在订阅完成之前使用了console.log:

如果是这种情况,你会发现使用它应该有用:

Template.moitorContent.rendered = function(){
    console.log(Svse.find({}).fetch());
}

要通过此操作,您可以先检查是否有数据/或使用Session变量检查您的订阅是否完整。

Template.moitorContent.rendered = function(){
    if(!this._rendered && Svse.find({}).count()) {
      this._rendered = true;
      console.log(Svse.find({}).fetch());
    }
}

更清洁的方法是删除autopublish包&amp;制作手动订阅&amp;订阅。使用Session将订阅标记为完整&amp;检查您的rendered&amp;使用它来完成所有可用数据的下一个任务。