我有这个代码:
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;
};
我收到错误:未捕获类型错误:无法读取未定义的属性“lap_n”
。
我知道lap_n
实际上是obj
的一个属性。
我没有使用自动订阅。有什么想法吗?
编辑:
已解决。谢谢大家。
if(obj){ return obj.lap_n } 正如你所说,成功了。
最佳答案
您应该始终检查模板内是否存在对象。其工作原理是,模板将在页面加载时立即执行,甚至可能在订阅从服务器检索 mongo 数据之前执行,因此在这种情况下,您的 obj 将是未定义的,并且不会具有您期望的属性(property)。但由于模板是 react 性的,一旦数据可用,您的 Practices.findOne
调用将被重新评估并重新执行模板。然后它就会起作用。
关于javascript - Meteor 中未捕获的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195802/