我有这段代码:
Meteor.subscribe('practices');
Session.set('practice', 'Practice 1');
Template.laps_t.laps = function () {
var obj = Practices.findOne({name: Session.get('practice')});
return obj.lap_n;
};
我收到了一个错误:Uncaught TypeError: Cannot read property 'lap_n' of undefined
。
我知道lap_n
实际上是obj
的属性。
我没有使用自动订阅。有什么想法吗?
修改
解决。谢谢你们。
if(obj){return obj.lap_n}就像你说的那样做了。
答案 0 :(得分:2)
您应该始终检查模板中是否存在对象。这种方式的工作方式是模板将在页面加载时立即执行,甚至可能在订阅从服务器检索mongo数据之前执行,因此在这种情况下,obj
将是未定义的,并且不具有您期望的属性。但由于模板是被动的,一旦数据可用,您的Practices.findOne
调用将被重新评估并重新执行模板。然后它会起作用。
答案 1 :(得分:0)
您可能需要等到数据到达,因此您可以尝试添加
if obj
return obj.lap_n
else
return {
lap_n: 0
}