现在我在收到此错误之前遇到了类似的问题:
模板助手中出现异常:TypeError:无法读取属性
未定义的“个人资料”
同样的事情再次发生,但在第二个订单上,其中包含另一个用户的配置文件信息(第一个配置文件已定义)。
我如何让它在 {{#each order}} 中重新渲染?
当只有 2 个订单时,由于某种原因,info.firstName、lastName 和building 似乎也会被调用3 次...
In HTML:
<template name="orderItem">
<section>
<form role="form" id="ordersList">
<div>
{{#each orders}}
<input type="text" name="name" value="{{info.firstName}} {{info.lastName}}">
{{/each}}
</div>
<div>
{{#each orders}}
<input type="text" name="building" value={{info.building}}>
{{/each}}
</div>
<div>
{{#each orders}}
<input type="text" name="featuredDish" value={{featuredDish}}>
{{/each}}
</div>
</form>
</section>
</template>
在 JavaScript 中:
Template.orderItem.orders = function() {
var todaysDate = new Date();
return Orders.find({dateOrdered: {"$gte": todaysDate}});
};
Template.orderItem.info = function() {
var userId = this.userId;
var user = Meteor.users.findOne(userId)
var firstName = user.profile.firstName;
var lastName = user.profile.lastName;
var building = user.profile.building;
return {
firstName: firstName,
lastName: lastName,
building: building
}
};
感谢您的帮助!
此错误是常见问题。
您正在尝试访问未定义的用户对象。
功能info
不检查是否user
是正确的对象。使用称为guarding http://seanmonstar.com/post/707078771/guard-and-default-operators :
Template.orderItem.info = function() {
var userId = this.userId;
var user = Meteor.users.findOne(userId)
var firstName = user && user.profile && user.profile.firstName;
var lastName = user && user.profile && user.profile.lastName;
var building = user && user.profile && user.profile.building;
return {
firstName: firstName,
lastName: lastName,
building: building
}
};
即使用户是这样,上面的代码也不会抛出任何错误undefined
.
我假设你已经删除了autopublish
包裹。
可能您还没有发布/订阅Meteor.users
集合,所以在minimongo中找不到数据。
记得发布哦Meteor.users
收藏并订阅:
Meteor.publish("users", function(){
return Meteor.users.find({},{fields:{profile:1}})
})
Meteor.subscribe("users");
发布 Meteor.users 的某些信息以及 Meteor.users 的更多信息 https://stackoverflow.com/questions/13151879/publish-certain-information-for-meteor-users-and-more-information-for-meteor-use
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)