【问题标题】:Add listener OnReady to extjs ComboBox将监听器 OnReady 添加到 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 请求有计时问题?

标签: javascript ajax combobox extjs4.1 onready


【解决方案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,一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2014-04-13
    • 1970-01-01
    • 2011-10-12
    • 2012-01-22
    • 2013-01-12
    • 2012-06-02
    相关资源
    最近更新 更多