[英]ember.js how to handle ManyToMany relations creating?
假設在我的后端中,我有模型Dealer
和Car
,它們在Ember中都與ManyToMany
關系有關。 我可以在后端手動創建關系,然后以Ember視圖顯示它時,可以輕松地顯示Dealer X
在其要約中具有Car 1
, Car 2
和Car 3
。 同樣,在顯示Car
我可以顯示包含Car
模型的所有Dealers
。
現在,我需要添加一些編輯可能性,這意味着,例如,當我編輯Car
我想選擇在其報價中包含該Car
的Dealers
。 (我只需要對關系的一側進行這樣的編輯-不能同時對兩者進行編輯,所以可以接受我可以將Dealers
添加到Cars
但不需要朝相反的方向進行操作(這正是我的背景工作的方式)
因此,在App.CarController
我創建了一個類似addDealerToCar
和deleteDealerFromCar
的動作,它們將適當的查詢發送到后端,以保存關系。
問題是:我該如何填寫某些字段,這將使我能夠選擇Dealer
。 使用選擇框或其他下拉菜單,然后調用將發送到后端的操作?
我最近實現了通過使用復選框以表單形式添加多對多關系。 這很適合我的用例,因為對於一個特定的汽車,我只能選擇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());
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.