无论如何,只有在组合框准备好时才执行功能?
我遇到了麻烦,因为在 Ext.OnReady 结束时,有时组合似乎还没有准备好,并且调用一个函数来用 ajax 调用填充它的值会导致很多麻烦。
我正在寻找一种正确的方法来做到这一点,而不是
setTimeout(function(){myDataFiller();},300);
无论如何,只有在组合框准备好时才执行功能?
我遇到了麻烦,因为在 Ext.OnReady 结束时,有时组合似乎还没有准备好,并且调用一个函数来用 ajax 调用填充它的值会导致很多麻烦。
我正在寻找一种正确的方法来做到这一点,而不是
setTimeout(function(){myDataFiller();},300);
尝试这个:
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
上面的使用。这意味着该函数只会执行一次,因此如果某些事情导致您的组合框重新呈现,您最终不会错误地重置该值。
看来这是基于cpu的渲染问题。
我在 Intel Core 2 Duo 上做了一些测试,我可以重现错误。之后我尝试了i7 cpu,一切都很好。