如何避免在Ext.form.ComboBox中显示加载文本?

时间:2009-04-21 08:36:01

标签: javascript combobox extjs

我使用Ext.form.ComboBox的方式与此示例非常相似: http://extjs.com/deploy/dev/examples/form/forum-search.html

令我恼火的是,当ajax调用正在进行时,它显示加载文本,我看不到之前的任何结果。

例如我输入'test' - >它显示结果 - >我添加'e'(搜索字符串是'teste') - >结果消失和加载文本显示,所以一秒钟我看不到任何结果,并考虑它是不是我正在寻找的...

我怎样才能改变这一点,只是在'加载'时不要说什么...

3 个答案:

答案 0 :(得分:1)

解决方案是覆盖Ext.form.ComboBox的'onBeforeLoad'方法:

  Ext.override(Ext.form.ComboBox, 
    { onBeforeLoad: 
        function() {this.selectedIndex = -1;}
    });    

请注意,这会覆盖类方法,因此所有ComboBox实例都不会显示LoadingText。如果您只想覆盖一个实例 - 请使用插件(以非常类似的方式)。

如果愿意,您还可以查看Ext.LoadingMask以设置适当的加载掩码。

答案 1 :(得分:0)

如果您没有向用户显示加载消息,用户将如何知道发生了什么?用户会注意到它已经加载的结果可能会等待查看结果,但是如果没有显示,那么用户就不会知道它是否带来了新数据。

答案 2 :(得分:0)

您可以监视组合框的expand事件并将picker加载设置为false。

    // in the controller
    init: function() {
      this.control({
        "form combobox[id=fieldId]": {
          expand: function(combobox) {
            combobox.getPicker().setLoading(false);
          }
        }
      });
    }