2009-04-21 1 views
2

Я использую Ext.form.ComboBox очень похожим образом, как в этом примере: http://extjs.com/deploy/dev/examples/form/forum-search.htmlКак не показывать загружаемый текст в Ext.form.ComboBox?

Что меня раздражает, что когда вызов Ajax находится в стадии разработки он показывает загрузку текста и я не вижу никаких результатов от до.

Например, я ввожу 'test' -> он показывает результат -> я добавляю 'e' (строка поиска - teste) -> результат исчезает и загружается текст, поэтому на секунду я не вижу никакого результата и думать о том, если это не то, что я ищу ...

Как я могу изменить это, чтобы просто не сказать ничего, когда «загрузка» ...

ответ

1

Решение переопределить «onBeforeLoad» метод Ext.form.ComboBox:

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

Пожалуйста, имейте в виду, что это переопределяет метод класса, поэтому все экземпляры ComboBox не будет иметь LoadingText показ , Если вы хотите переопределить только один экземпляр - используйте плагины (аналогичным образом).

Вы также можете посмотреть Ext.LoadingMask, чтобы установить подходящую маску загрузки в сторону элемента, если хотите.

+0

Я использую плагины, как вы упоминаете. Thx для ответа ... – Juraj

0

Если вы не показываете загрузки сообщений для пользователя как пользователь будет знать, что происходит? Пользователь заметит, что его уже загруженные результаты могут ждать результатов, но если ничего не отображается, пользователь не будет знать, приведет ли его к появлению новых данных или нет.

+0

Это правда, но второе, когда я не вижу ничего, намного хуже для меня. Google не показывает ничего, кроме результата, и это очень естественно для меня. Информация о том, что что-то происходит, имеет некоторую добавленную стоимость только в первый раз. Каждый раз пользователь уже ожидает, что поиск присутствует в фоновом режиме. – Juraj

0

Вы можете перенести событие разворота combobox и установить загрузку сборщика на false.

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