10

select2 選択ボックスをラップするコンポーネントを作成しています。コードは以下のとおりです。

App.FixedSelectComponent = Ember.Component.extend({
  actions: {
    change: function(value) {
      this.set('selectedValue',value);
    }
  },

didInsertElement : function(){
  this.$("#select1").select2().on("change", function(e) {
      if ($.isArray(e.val)) {
          $.each(e.val, function(index,value) {
              console.log("multiple:",value.split('>')[2].split('<')[0]);
             // send to change
          });             
      } else {
          console.log("single:",e.val.split('>')[2].split('<')[0]);  
          // send to change
      }
    });
  },

  willDestroyElement : function() {
    this.$("#select1").select2('destroy');
},

});

ただし、私が立ち往生しているのは、 on("change") イベントで取得したデータを、定義した action:change に送信する方法、または on で selectedValue プロパティ自体を設定できるかどうかです(「変更」) イベント

「これ」は「// send to change」行のコンポーネントではありません - この時点でコンポーネント自体への参照をどこで取得できますか?

基本的に私が達成しようとしているのは、select2の「変更」イベントに渡されたデータをselectedValueプロパティに取得することです

ありがとう

4

5 に答える 5

2

thiscontext は の FixedSelectComponent コンテキストを参照せず$.each、FixedSelectComponent の変更メソッドを呼び出す send メソッドも使用します。

参照: http://emberjs.com/api/classes/Ember.Component.html#method_send

didInsertElement : function(){
  var _this = this;
  this.$("#select1").select2().on("change", function(e) {
      if ($.isArray(e.val)) {
          $.each(e.val, function(index,value) {
              console.log("multiple:",value.split('>')[2].split('<')[0]);
             _this.send('change',value.split('>')[2].split('<')[0]); // send to change
          });             
      } else {
          console.log("single:",e.val.split('>')[2].split('<')[0]);  
          _this.send('change',e.val.split('>')[2].split('<')[0]); // send to change
      }
    });
  }
于 2016-08-03T07:41:38.907 に答える