CombJox ExtJS действует как обычный выбор - PullRequest
13 голосов
/ 29 января 2011

Я пытаюсь использовать ComboBox на FormPanel, он определяется следующим образом:

{
    xtype: 'combo',
    name: 'Reasons',
    store: new Ext.data.ArrayStore({
        id: 0,
        fields: ['myId', 'displayText'],
        data: [
            [1, 'Reason 1'],
            [2, 'Second Reason'],
            [3, 'Something else']
        ]
    }),
    typeAhead: false,
    mode: 'local',
    valueField: 'myId',
    displayField: 'displayText',
    allowBlank: false,
    editable: false,
    forceSelection: true
}

Я хотел бы действовать как обычный элемент выбора, когда я могу редактировать как ложный, я не могу повторно выбратьбольше, когда в качестве true (по умолчанию) мне нужно удалить выделение (путем возврата или удаления), чтобы перевыбрать.

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

Меня беспокоит, действительно ли мне нужен обычный выбор (не совсем обычный - возможность хранить и манипулировать опциями - это очень круто) - combo мне кажется следующий элемент уровня, который получил слишком многофункции, которые мне нужно отключить, и combo отображается как вход со стрелкой вниз, что вызывает все действия.


Мой вопрос:

Является ли это элементом ExtJS, который использует HTML-тег select, действует как select, отображает как select?

1 Ответ

11 голосов
/ 10 февраля 2011

Хитрость заключается в том, чтобы использовать triggerAction: 'all' - он заставляет раскрывающийся список со списком, чтобы отобразить все элементы при нажатии на значок со стрелкой вниз (триггер).

Это, вероятно, самый нелогичный вариант конфигурации ExtJS,И невозможно понять, что на самом деле делает, читая документы.И, как вы говорите, чтобы получить простую комбинацию, вы должны указать множество параметров конфигурации, просто чтобы отключить причудливые вещи.

Ребята из ExtJS обещали исправить это в ExtJS 4, но до тех порЯ предлагаю вам создать свой собственный класс ComboBox, который настроен так, как это наиболее часто требуется в вашем приложении.Например, у меня есть что-то вроде этого в моем текущем проекте:

/**
 * Simple combo, that just allows to choose from a list of values.
 */
var StaticComboBox = Ext.extend(Ext.form.ComboBox, {
    mode: 'local',
    triggerAction: 'all',
    editable: false,
    valueField: 'value',
    displayField: 'label',
    /**
     * @cfg {[[String]]} data
     * Items in combobox as array of value-label pairs.
     */
    data: [],

    initComponent: function() {
        this.store = new Ext.data.ArrayStore({
            fields: ['value', 'label'],
            data: this.data
        });
        StaticComboBox.superclass.initComponent.call(this);
    }
});

Имея это, я могу создать простой комбо всего за несколько строк:

new StaticComboBox({
    name: 'Reasons',
    data: [
        [1, 'Reason 1'],
        [2, 'Second Reason'],
        [3, 'Something else']
    ]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...