Что ExtJS ComboBox triggerAction: «все» действительно делает? - PullRequest
22 голосов
/ 12 июня 2009

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

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

Но написано так: странно:

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

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

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

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

Действие, выполняемое при нажатии на триггер. Используйте 'all', чтобы выполнить запрос, указанный в allQuery. опция конфигурации (по умолчанию 'query')

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

Так что же это на самом деле делает triggerAction

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

1 Ответ

22 голосов
/ 12 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...