将监听器 OnReady 添加到 extjs ComboBox
Posted
技术标签:
【中文标题】将监听器 OnReady 添加到 extjs ComboBox【英文标题】:Add listener OnReady to extjs ComboBox 【发布时间】:2012-09-06 08:58:51 【问题描述】:有没有办法在组合框准备好时执行函数?
我遇到了麻烦,因为在 Ext.OnReady 结束时,有时组合似乎还没有准备好,调用一个函数来用 ajax 调用填充它的值会导致很多麻烦。
我正在寻找一种合适的方法来代替
setTimeout(function()myDataFiller();,300);
【问题讨论】:
尝试使用 afterRender() 监听器进行组合 尝试过:listeners: afterrender: function(t,o) getInfoProduct();,但它具有相同的行为。 :S 你能贴出你的combo代码sn-p吗? 听起来你的 ajax 请求有计时问题? 【参考方案1】:
试试这个:
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 评论后做的,并没有锻炼。【参考方案2】:看来是基于cpu的渲染问题。
我在 Intel Core 2 Duo 上做了一些测试,我可以重现错误。之后我尝试了 i7 cpu,一切都很好。
【讨论】:
以上是关于将监听器 OnReady 添加到 extjs ComboBox的主要内容,如果未能解决你的问题,请参考以下文章