Подтвердить что ты не робот

Что делает ExtJS ComboBox triggerAction: "все" действительно?

Я попытался создать простой ComboBox:

var combo1 = new Ext.form.ComboBox({
  store: [1,2,3],
  renderTo: document.body
});

Но написанный таким образом он действует странно:

  • Когда вы впервые открываете раскрывающийся список, он предлагает три варианта.
  • Вы выбираете один.
  • Но когда вы после этого попытаетесь изменить свой выбор, выпадающий список предлагает только один выбор - тот, который вы ранее выбрали.

Я сравнил свой код с образцами на домашней странице Ext и обнаружил, что добавление triggerAction: "all" решает мою проблему:

var combo2 = new Ext.form.ComboBox({
  triggerAction: "all",
  store: [1,2,3],
  renderTo: document.body
});

Документация ExtJS для triggerAction не говорит мне много:

Действие, выполняемое при нажатии триггера. Используйте "все" для запуска запроса, указанного в allQuery config (по умолчанию - запрос)

Я не указал параметр allQuery. На самом деле, я не хочу вообще выполнять запрос на сервер.

Итак, что делает этот triggerAction?

И устанавливает ли он "all" действительно то, что я должен делать, когда мне просто нужно простое статическое поле со списком?

4b9b3361

Ответ 1

После выбора элемента список фильтруется для соответствия текущему текстовому значению. В вашем случае это всегда точно выбранное значение, но более очевидно с многосимвольными значениями (см. Пример имен состояний в Ext). Если вы удалите выбранное значение, выпадающее меню вернется к значениям. triggerAction:'all' означает, что не фильтровать, всегда показывать все значения.