無論如何,只要組合框已準備好就執行一個函數嗎?添加監聽器OnReady to extjs ComboBox
我遇到了麻煩,因爲在Ext.OnReady結束時,它似乎有時組合沒有準備好,並調用一個函數來填充它的值與ajax調用它會導致很多麻煩。
我正在尋找一個做的,而不是
setTimeout(function(){myDataFiller();},300);
無論如何,只要組合框已準備好就執行一個函數嗎?添加監聽器OnReady to extjs ComboBox
我遇到了麻煩,因爲在Ext.OnReady結束時,它似乎有時組合沒有準備好,並調用一個函數來填充它的值與ajax調用它會導致很多麻煩。
我正在尋找一個做的,而不是
setTimeout(function(){myDataFiller();},300);
看來這是一個基於cpu的渲染問題。
我在英特爾Core 2 Duo上做了一些測試,我可以重現錯誤。之後,我嘗試了i7 CPU,一切都很好。
這是一個正確的方法試試這個:
var combo = new Ext.form.field.ComboBox({
/* config settings, blah blah blah */
listeners: {
afterrender: {
single: true,
fn: function(combobox){
Ext.Ajax.request({
/* request settings */
success: function(data){
var value;
/* process your data response */
combobox.setValue(value);
}
});
}
}
}
});
或者,如果你已經從你的Ajax請求有值,你可以設置該值直接在afterrender
函數中。注意上面的使用single: true
。這意味着該函數只會執行一次,所以如果某件事情導致您的組合框重新呈現,您不會錯誤地重置該值。
你提出的第一種方式是我在Jai評論之後做的,並沒有鍛鍊。 – GLlompart
嘗試用組合的afterRender()偵聽器組合 – AJJ
嘗試:
但它具有相同的行爲。 :S – GLlompart你可以發佈你的組合代碼片段嗎? – AJJ