3

JSFiddle - http://jsfiddle.net/9gA4y/1/

私は次のモデルを持っています:

contact => (many2many) => tags
contact => (one2many) => address

Ember データ モデル:

App.Contact = DS.Model.extend({
  name: attr('string'),  
  tags: hasMany('App.Tag'),
  addresses: hasMany('App.Address')
});

App.Address = DS.Model.extend({
  street: attr('string'),
  country: attr('string'),
  contacts: belongsTo('App.Contact')
})
App.Tag = DS.Model.extend({
  name: attr('string'),
  contacts: hasMany('App.Contact')
});

新しい連絡先レコードを追加することがわかりました

  • 既存の住所を新しく作成した連絡先に関連付けるにはどうすればよいですか。(1 2 多数)
  • 新しく作成した連絡先に既存のタグを関​​連付けるにはどうすればよいですか。(多い 2 多い)
  • 既存の連絡先の関連付けを削除するにはどうすればよいですか。
4

2 に答える 2

5

hasMany関係は、、またはを介して操作addObjectできaddObjectsますremoveObject

contact.get('addresses').pushObject(address);
contact.get('addresses').removeObject(address);

アドレスに連絡先を設定することもできます

address.set('contact', contact);
address.set('contact', null);

また、belongsToアソシエーションには単数形を使用する必要があることに注意してください(でcontactはありませんcontacts)。

App.Address = DS.Model.extend({
  street: attr('string'),
  country: attr('string'),
  contact: belongsTo('App.Contact')
});
于 2013-03-19T17:58:18.927 に答える
3

試す:

var contact = App.Contact.find(1),
    address = App.Address.find(1),
    tag = App.Tag.find(1);

contact.get('addresses').addObject(address);
contact.get('tags').addObject(tag);

this.get('store').commit(); //saves address and tag to contact

contact.get('tags').removeObject(tag);

this.get('store').commit(); //removes tag from contact
于 2013-03-17T19:00:51.193 に答える