1

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

html:

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

js:

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

使用 localhost:3000 打开 chrome 时,

控制台信息是“[]”

但是在chrome的控制台中输入它们

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

console.log 可以获取数据

像这样: 在此处输入图像描述

知道我做错了什么吗?

任何建议表示赞赏!

4

1 回答 1

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软件包并进行手动订阅和订阅。使用 aSession将订阅标记为已完成并检查您的订阅是否已完成rendered并使用它来使用所有可用数据执行下一个任务。

于 2013-03-27T15:05:33.190 回答