如何在hasMany关系中保存几个类似的模型?

时间:2015-03-30 06:56:34

标签: ember.js ember-data

jsbin example

<script type="text/x-handlebars" data-template-name="index">
    model.cards.length: {{model.cards.length}}
    <br>
    <button {{action 'addCardToDeck' card}}>Add card</button>
</script>

App = Ember.Application.create();

App.Card = DS.Model.extend({});

App.Deck = DS.Model.extend({
    cards: DS.hasMany('card', {async: true})
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.createRecord('deck');
  }
});

App.IndexController = Ember.Controller.extend({
  onInit: function() {
    var card = this.store.createRecord('card');

    this.set('card', card);
  }.on('init'),

  actions: {
    addCardToDeck: function (card) {
     this.get('model.cards').pushObject(card);
    }
  }
});

Ember-data不会在hasMany关系中存储具有相同id的模型。

如何组织工作hasMany以便可以保存几个类似的模型?

1 个答案:

答案 0 :(得分:0)

您看到此问题的原因不是因为您的模型记录具有相同的ID,而是因为您每次调用card时都试图将完全相同的addCardToDeck记录推送到您的商店。为了解决这个问题,你可以在每次调用addCardToDeck时将卡重置为新创建的对象,尽管我不确定这是完成你所追求的最佳方法,因为你最终会得到一个你商店里有很多空记录。

addCardToDeck: function (card) {
  this.get('model.cards').pushObject(card);

  card = this.store.createRecord('card');    
  this.set('card', card);
}