[英]Why am I getting an 'undefined' error but the code is working in my Meteor template?
我做了这个UI.registerHelper:
UI.registerHelper('addressCityName', function(id) {
"use strict";
return Cities.findOne({_id: id }).name
})
这使我可以访问“地址”集合中链接的city
ID的name
属性。
它可以在浏览器中工作,但是在控制台中我收到一条错误消息: Exception in template helper: TypeError: Cannot read property 'name' of undefined
。
如果我从UI.registerHelper返回值中删除了name
属性,则错误消失了,但浏览器不再显示城市名称。
这是怎么回事,我该如何解决?
当您尝试使用Cities.findOne({_id: id }).name
。 但是您的订阅尚未在客户端准备好。 因此Cities.findOne({_id: id })
是不确定的。
因此,如果您尝试获取Cities.findOne({_id: id }).name
那么如果您将其可视化,输出将类似于undefined.name
。 因此,这就是您收到错误的原因。
要解决该问题,您可以添加一个if条件,它将解决该问题。
UI.registerHelper('addressCityName', function(id) {
"use strict";
if(Cities.findOne({_id: id })) {
return Cities.findOne({_id: id }).name
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.