将监听器 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的主要内容,如果未能解决你的问题,请参考以下文章

extJs相关名字解释

ExtJs 多次 onReady 执行

在 EXTJS 4 中向 Ext.Grid.panel 添加监听器

将按键事件添加到 ExtJS DatePicker

如何在 Extjs 4 标签上添加点击事件

如何为某些按钮添加监听器 extjs