2012-09-06 99 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