无论如何,只要组合框已准备好就执行一个函数吗?添加监听器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