2017-07-31 63 views
0

我想在創建select2時傳遞自定義屬性。示例(我自定義屬性爲myFilterEnabled):select2:是否可以傳遞自定義輸入並在方法中訪問

$('#mySelId2').select2({ 
    myFilterEnabled: false, //Pass my initial state 
    query: function(query) { 
    var res = { 
     results: CityFilter.cities 
    }; 
    query.callback(res); 
    } 
}); 

並使用它在查詢或呈現功能。像:

$('#mySelId2').select2({ 
    myFilterEnabled: false, 
    query: function(query) { 
    var fltEnabled = this.myFilterEnabled; //Read current state 
    var res = { 
     results: fltEnabled ? [] : CityFilter.cities 
    }; 
    query.callback(res); 
    } 
}); 

這是這樣的,有一個變量的初始狀態。但是,它可以在外部進行更改,並且我希望在每次重新呈現/查詢期間檢查該狀態。

編輯:似乎我發佈之前犯了一個錯誤。上面的代碼似乎工作。我打算添加一個像'my'或'myProj'這樣的通用前綴,以便它不會與select2本身的任何變量衝突。

編輯2:如前所述,傳遞初始狀態和讀取當前狀態正在工作。我仍然需要從外部改變這種狀態的方法。如果select2沒有可以在元素上設置數據屬性的方法。

+2

爲什麼不設置元素它自己的數據屬性,並使用('$(元素)。數據(「myFilterEnabled」,「一些價值」)'和'獲得$(元素) .data('myFilterEnabled')') –

+0

圖書館如何接受您的自定義屬性? – Sankar

+0

@maximusツ謝謝。我會嘗試的。 – Teddy

回答

0

這是我想要的完整週期:

設置自定義狀態 - >查看自定義狀態查詢時/渲染 - >用戶行爲變化的自定義狀態 - >觸發狀態變化重新渲染

這是我成功地做到這一點,截至目前:

1)我可以通過在選項自定義參數,同時建立select2

$('#mySelId2').select2({ 
      myFilterEnabled: false, 
      query: function(query){ ... 

2)我能爲

this.myFilterEnabled 

3回調中讀取自定義參數)我可以設置自定義參數從外面

$('#s2id_<myId>').data('select2').opts.myFilterEnabled = true; 

3)設置該屬性爲後如上所示,我想select2到 重新申請query功能。我可以triggerchangeinput.select2-input。但是,在文本保持不變的情況下,有一項檢查可以防止查詢的重新執行 。所以,我更進一步 並用'true'參數調用updateResults函數。 強制updateResult繼續再次運行query。例如:

$('#s2id_<myId>').data('select2').updateResults(true); 
相關問題