私は最近、チェックボックスを使用してフォームに多対多の関係を追加することを実装しました。これは私の使用例に適していました。なぜなら、特定の車に対して選択できるディーラーシップが 2 つから 6 つしかないからです。ただし、それ以上の場合、これはおそらく適切ではありません。
これは、私が使用したコードをあなたのシナリオに翻訳したものです。この質問のコードからインスピレーションを得ました: Ember、ember-data、Rails との多対多の関係
意見:
App.CarEditView = Ember.View.extend({
dealerCheckbox: Ember.Checkbox.extend({
init: function(){
this._super();
var self = this;
// start off with the checkboxes checked for any dealer that
// has this car already
this.get('car.dealers').forEach(function(dealer){
if(dealer.get('id') == self.get('dealer.id')){
self.set('checked', true);
}
});
},
checkedObserver: (function(){
var car = this.get('car');
if(this.get('checked'))
car.addDealerToCar(this.get('dealer'));
else
car.deleteDealerFromCar(this.get('dealer'));
}).observes('checked')
})
});
テンプレート (これは車を編集するためのフォームの一部になります):
<div class="control-group">
<label class="control-label">Required Signatures</label>
<div class="controls">
{{#each dealer in controller.allDealers}}
<label class="checkbox">
{{view view.dealerCheckbox
carBinding="controller.content"
dealerBinding="dealer"
}}
{{dealer.title}}
</label>
{{/each}}
</div>
</div>
上記のコードを機能させるには、次のようなものを追加して、すべてのディーラーのリストにアクセスできるようにする必要があります。
App.CarEditRoute = Ember.ObjectController.extend({
setupController: function(controller, model) {
this._super(controller, model);
controller.set('allDealers', App.Dealer.find());
}
});