簡體   English   中英

ember.js如何處理ManyToMany關系創建?

[英]ember.js how to handle ManyToMany relations creating?

假設在我的后端中,我有模型DealerCar ,它們在Ember中都與ManyToMany關系有關。 我可以在后端手動創建關系,然后以Ember視圖顯示它時,可以輕松地顯示Dealer X在其要約中具有Car 1Car 2Car 3 同樣,在顯示Car我可以顯示包含Car模型的所有Dealers

現在,我需要添加一些編輯可能性,這意味着,例如,當我編輯Car我想選擇在其報價中包含該CarDealers (我只需要對關系的一側進行這樣的編輯-不能同時對兩者進行編輯,所以可以接受我可以將Dealers添加到Cars但不需要朝相反的方向進行操作(這正是我的背景工作的方式)

因此,在App.CarController我創建了一個類似addDealerToCardeleteDealerFromCar的動作,它們將適當的查詢發送到后端,以保存關系。

問題是:我該如何填寫某些字段,這將使我能夠選擇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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM