ExtJS 的 Combobox 方便好用,配上 Proxy 後可以自動載入 Ajax 的 JSON 內容。不過 API 內就好像沒有一個方法設定自動選擇第一選項。那應該要如何達成呢?
我們可以通過使用 Store 的 load 事件,把 load 入 Store 的記錄抽取出來,然後使用 Combobox 的 select(r)
來設定選擇項目。
/** * on load event listener callback */ function load(this, records, successful, operation, eOpts) {}
可以透過 load
事件來取得 records
資料。
不過我們無法從 Store 取得 Combobox 元件,因為一個 Store 可以 Attach 到很多不同的元件,所以我們需要在第三方的元件上設定好關聯事件。這最好是 Combobox 的 top parent 元件。
以下時通過使用 load
事件來自動選擇第一選項目的例子 :
combobox.getStore().on('load', function(ele, records) { if( records.length > 0 ) { combobox.select(records[0]); } }};
而這段代碼運行的最佳時機,可以是 combobox 元件的 top parent 元件的 initComponent()
方法內。
ExtJS 的 Combobox 方便好用,配上 Proxy 後可以自動載入 Ajax 的 JSON 內容。不過 API 內就好像沒有一個方法設定自動選擇第一選項。那應該要如何達成呢? ### 使用 Store 的 load 事件 我們可以通過使用 Store 的 load 事件,把 load 入 Store 的記錄抽取出來,然後使用 Combobox 的 `select(r)` 來設定選擇項目。 ```js /** * on load event listener callback */ function load(this, records, successful, operation, eOpts) {} ``` 可以透過 `load` 事件來取得 `records` 資料。 不過我們無法從 Store 取得 Combobox 元件,因為一個 Store 可以 Attach 到很多不同的元件,所以我們需要在第三方的元件上設定好關聯事件。這最好是 Combobox 的 top parent 元件。 ### 設定方法 以下時通過使用 `load` 事件來自動選擇第一選項目的例子 : ```js combobox.getStore().on('load', function(ele, records) { if( records.length > 0 ) { combobox.select(records[0]); } }}; ``` 而這段代碼運行的最佳時機,可以是 combobox 元件的 top parent 元件的 `initComponent()` 方法內。