我最近使用复选框实现了在表单中添加多对多关系。这适合我的用例,因为我只有两到六个经销商可供您为特定汽车选择。如果你有更多,这可能不合适。
这是我用来翻译到您的场景的代码。我从这个问题的代码中获得灵感:与 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());
}
});