Extjs4中combobox控制元件-資料加載出來,但一直在loading.
今天在做combo級聯的時候碰到這個問題,很令人頭疼,反覆檢查程式碼,並沒發現有什麼問題;而且更令人詫異的是,在我同事的機器上執行卻是好好地,而且他用的ie版本跟我的版本一樣,那這是什麼問題呢?不得而解、、、、、、、
但問題總是得去解決的,但是怎麼解決呢?
首先,我知道我要解決的問題是將LoadMask這個東東去掉就行了。於是去查API,看combo裡面有沒有關於loadMask這個屬性或者方法,很遺憾沒有。
但是怎麼可能呢,於是一個屬性一個屬性去看,看到defaultListConfig這個屬性,英文解釋是:Set of options that will be used as defaults for the user-configured
點選listConfig進入該屬性API,An optional set of configuration properties that will be passed to theExt.view.BoundList's constructor.大概是說:一組可選的屬性配置將會傳遞到Ext.view.BoundList的
建構函式中去。在下面我看到這樣一段程式碼Ext.view.BoundList.loadingText- defaults to'Loading...',
這不正是載入文字嗎?
為了獲得更多的資訊我進入Ext.view.BoundList裡檢視,An internal used DataView for ComboBox.
大概是說:BoundList是combo的一個內部使用的資料檢視。檢視它的屬性
列表,哈哈,找到了loadMask,這不正是
我所要的東西嗎
loadMask: Boolean/Object
False to disable a load mask from displaying will the view is loading.
This can also be aExt.LoadMaskconfiguration object. Defaults totrue
在我的combo控制元件裡面加上如下一段程式碼:
defaultListConfig:{
loadMask: false
}
問題解決了,LoadMask沒了。
//------------------------------------------------------------------------------------------------------------------------
資料已經載入完了 但依然一直loading中。。。
原本以為是ajax請求除了問題,於是寫了個grid的ajax測試,卻非常正常。遂經過查閱API,看示例,發現了mask這個東西。
Ext combox有一個預設渲染配置:
1 2 3 4 5 6 7 8 9 10 |
//....................................
defaultListConfig: {
emptyText:
'' ,
loadingText:
'Loading...' ,
loadingHeight: 70,
minWidth: 70,
maxHeight: 300,
shadow:
'sides'
}
//....................................
|
其中有loadingText: ‘Loading…’,這一個配置項,這個就是loadMask。
在這段預設配置中僅有顯示,沒有隱藏的設定。所以導致顯示出來後一直不消失。需要手動設定不讓其顯示或者資料載入完成後隱藏掉它。
通過查閱資料,有兩種可行方法:
一、覆蓋預設配置,設定loadMask為不顯示。
?1 2 3 4 5 |
//....................................................
listConfig: {
loadMask: false
}
//....................................................
|
二、在資料載入完成後執行unmask使其隱藏:
?1 2 3 4 |
//.............................................
combox.getEl().unmask();
//.............................................
|
轉載請註明出處!
This entry was posted in Extjs. Bookmark the permalink.