在获取对象属性之前解析hasMany关系的每个对象

时间:2014-08-14 12:45:24

标签: ember.js ember-data

我有一个名为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
        });
      });
    });
}, 

0 个答案:

没有答案