我无法在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可以获取数据
像这样:对我做错了什么的想法?
任何建议都赞赏!
答案 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;使用它来完成所有可用数据的下一个任务。