2012-09-06 97 views
0

無論如何,只要組合框已準備好就執行一個函數嗎?添加監聽器OnReady to extjs ComboBox

我遇到了麻煩,因爲在Ext.OnReady結束時,它似乎有時組合沒有準備好,並調用一個函數來填充它的值與ajax調用它會導致很多麻煩。

我正在尋找一個做的,而不是

setTimeout(function(){myDataFiller();},300);
+0

嘗試用組合的afterRender()偵聽器組合 – AJJ

+0

嘗試:

listeners: {afterrender: function(t,o){ getInfoProduct();}},
但它具有相同的行爲。 :S – GLlompart

+0

你可以發佈你的組合代碼片段嗎? – AJJ

回答

0

看來這是一個基於cpu的渲染問題。

我在英特爾Core 2 Duo上做了一些測試,我可以重現錯誤。之後,我嘗試了i7 CPU,一切都很好。

0

這是一個正確的方法試試這個:

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。這意味着該函數只會執行一次,所以如果某件事情導致您的組合框重新呈現,您不會錯誤地重置該值。

+0

你提出的第一種方式是我在Jai評論之後做的,並沒有鍛鍊。 – GLlompart