我有一个名为Order的模型,它与items具有hasMany关系。当我做以下
Order.get('items').then(function(items){
items.forEach(function(item, index){
console.log(item.get('name')); // gives undefined
item.then(); // undefined function then
item.get('name').then(); // then of undefined
//Basically unable to do this
someOtherNewItemObject.set('name', item.get('name')); // someOtherNewItemObject this is an ember object
// For some reason this doesn't even get updated in the future when promise is resolved
})
})
然后当我在把手模板中执行此操作时
{{someOtherNewItemObject.name}} // doesn't display anything or get updated.
基本上我试图将模型的属性复制到另一个ember对象,当模型自行解析时,我希望在模板中更新它。
编辑:
订单模型:
orderid: attr('String'),
hotel: belongsTo('hotel'),
user: belongsTo('user'),
items: hasMany('item',{async:true}),
quantities: attr(),
address: belongsTo('deliveryLocation'),
status: attr('Number'),
createDate: attr('date', {defaultValue: new Date()}),
updateDate: attr('Date')
项目的模型:
name: attr('String'),
menu: belongsTo('menu'), // Menu Id
price: attr('Number'),
cuisine: attr('String'),
available: attr('boolean'),
offer: belongsTo('offer'),
createDate: attr('Date'),
updateDate: attr('Date')
现在您可以看到项目不包含索引或数量(这些在订单模型中存在),所以我只是尝试创建另一个对象
var tempItem = Ember.Object.create({
index: null,
name: null,
price: null,
quantity: null,
subtotal: null
});
来自服务器的数据正在被完美地返回并且一切正常(模板自动更新)如果我只是按原样使用项目和订单模型,但是如果我尝试将它们复制到tempItem并使用它而不是它没有&#39 ; t似乎工作(模板中没有自动更新)。
tempItem是在组件内部创建并使用的。我将Order模型作为arguemnt传递给组件,然后执行此操作。
setupItems: function(){
var self = this;
var order = this.get('order');
var tempItems = this.get('modifiedItems'); // modifiedItems is Ember.A() initially
var quantities = order.get('quantities');
var tempItem = Ember.Object.create({
index: null,
name: null,
price: null,
quantity: null,
subtotal: null
});
var count = 0;
order.get('items').then(function(items){
items.forEach(function(item, index){
count++;
tempItem.set('index', index+1);
tempItem.set('name', item.get('name'));
tempItem.set('price', item.get('price'));
tempItem.set('quantity', quantities[index]);
tempItem.set('subtotal', parseInt(tempItem.get('price'))* parseInt(tempItem.get('quantity')));
tempItems.pushObject(tempItem);
tempItem = Ember.Object.create({
index: null,
name: null,
price: null,
quantity: null,
subtotal: null
});
});
});
},