Template.autorun()期间未加载Meteor模板数据
我试图在我的数据库中以反应式方式填充我的剑道数据源Template.autorun()期间未加载Meteor模板数据,meteor,kendo-ui,Meteor,Kendo Ui,我试图在我的数据库中以反应式方式填充我的剑道数据源 this.autorun(function(){ datasource.data(Organizations.findOne(thisOrg.data._id)); }); 每次初始渲染视图时都会正确激发,但在后续模板视图(非初始渲染)中,我在控制台中收到此错误,显示由于某些原因,template.data未加载: TypeError: Cannot read property '_id' of null at null.<an
this.autorun(function(){
datasource.data(Organizations.findOne(thisOrg.data._id));
});
每次初始渲染视图时都会正确激发,但在后续模板视图(非初始渲染)中,我在控制台中收到此错误,显示由于某些原因,template.data
未加载:
TypeError: Cannot read property '_id' of null
at null.<anonymous> (org.js?0330655fbd63766e034cecb907e93089ccc3ef11:129)
at view.js:191
at Function.Template._withTemplateInstanceFunc (template.js:437)
at view.js:190
at Object.Blaze._withCurrentView (view.js:523)
at viewAutorun (view.js:189)
at Tracker.Computation._compute (tracker.js:294)
at new Tracker.Computation (tracker.js:210)
at Object.Tracker.autorun (tracker.js:533)
at Blaze.View.autorun (view.js:201)
TypeError:无法读取null的属性'\u id'
在空。(org.js?0330655fbd63766e034cecb907e93089ccc3ef11:129)
at view.js:191
在Function.Template.\u中使用TemplateInstanceFunc(Template.js:437)
at view.js:190
在Object.Blaze.\u和CurrentView(view.js:523)
在viewAutorun(view.js:189)
在Tracker.compute.\u compute(Tracker.js:294)
在newtracker.Computation(Tracker.js:210)上
在Object.Tracker.autorun(Tracker.js:533)
在Blaze.View.autorun(View.js:201)
有什么想法吗?我的头都撞到这里了。感谢您的输入。这可能意味着您有一个竞争条件,即在自动运行触发后添加新数据。尝试先检查是否已插入:
this.autorun(function(){
if (newDataId === thisOrg.data._id) {
datasource.data(Organizations.findOne(thisOrg.data._id));
}
});
其中newDataId
是您的目标id
。然后,您需要事先将id
存储在执行插入或方法调用的newDataId
中
快速侧注:我建议将其存储在
pageSession
变量(反应性var或反应性dict)中,而不是存储在会话
var中(以避免过度拥挤会话)。你说得对,这是一个计时问题。。。在发布这篇文章后,我意识到iron router中有一个.ready()
选项,它实际上应该解决我的计时问题。请注意,.ready()
只会在第一次加载页面时执行。我建议只在第一次渲染时使用此解决方案(我也这样做),并使用我的方法处理模板刷新。