ember数据数组UI不在pushObject上更新

时间:2015-10-06 08:00:28

标签: ember.js ember-data

我有一个我为我的模型获取的product-tag列表。

路线:

model: function() {
  return {
    product_tags: this.store.find('product-tag', {merchant: merchId})
  }
}

我有一个为模型添加标签的组件,但是当我创建记录并将其推入模型后(如其他帖子所示),我的UI仍然没有更新。

addTag: function(name) {
  tag = this.store.createRecord('product-tag', {
    name: name
  });
  this.model.product_tags.toArray().addObject(tag);  

  tag.save();
}


//model merchant.js
export default DS.Model.extend({
  user_id: DS.attr('number'),
  product_tags: DS.hasMany('product-tag', {async: true})
});

//model product-tag.js
export default DS.Model.extend({
 merchant: DS.belongsTo('merchant'),
 name: DS.attr('string'),
});

我做错了什么?提前致谢。

1 个答案:

答案 0 :(得分:-1)

你应该在路线中制作数组,所以你可以随后使用它,就像你想要的那样。你调用toArray()创建一个新的Array实例,然后你的模型没有挂钩到刚刚制作的数组。

  model: function() {
      return {
        product_tags: this.store.query('product-tag', {merchant: merchId}).then(function(pt) {
           return pt.toArray(); 
        });
      }
    }

   var x = this.get('model.product_tags') === model's p_t // true
   var y = this.get('model.product_tags').toArray() === model's p_t // false

稍后再做

addTag: function(name) {
  this.get('store').createRecord('product-tag', {
    name: name
  }).save().then(function(saved){ 
     this.get('model.product_tags').pushObject(saved);
  }.bind(this);  
}