Extjs Combobox не может выбрать элемент - PullRequest
1 голос
/ 06 января 2011

Не использовал Extjs некоторое время, и я немного заржавел!

У меня есть следующий комбинированный список:

Код:

NameSpace.DirectCombo = Ext.extend(Ext.form.ComboBox, {
    displayField: 'Name',
    valueField: 'Id',
    triggerAction: 'all',
    queryAction: 'Name',
    forceSelection: true,
    mode: 'remote',
    initComponent: function () {
        this.store = new Ext.data.DirectStore(Ext.apply({
            api: this.api,
            root: 'data',
            fields: this.fields || ['Name', 'Id']
        }, this.storeConfig));

        NameSpace.DirectCombo.superclass.initComponent.call(this);
    }
});

NameSpace.LocationCombo = Ext.extend(NameSpace.DirectCombo, {
    storeConfig: {
        id: 'location-combo-store'
    },
    initComponent: function () {
        Ext.apply(this.storeConfig, {
            directFn: Location.AllHasLineupList,
            baseParams: { Id: selectedNodeId }
        });
        NameSpace.LocationCombo.superclass.initComponent.call(this);
    }
});

Какие загружаются ивсе в порядке с типом.

Но когда я пытаюсь выбрать элемент в предложениях, он не выберет его!

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Для тех Google, которые потеряли надежду, вы используете Ext 5.1.x и Firefox?Вы можете проверить с помощью Ext.getVersion().version

. На форуме ext сообщается об ошибке, которую можно исправить путем обновления до 5.1.5 или с помощью следующего фрагмента:

Ext.define('EXTJS_23846.Element', {
    override: 'Ext.dom.Element'
}, function (Element) {
    var supports = Ext.supports,
        proto = Element.prototype,
        eventMap = proto.eventMap,
        additiveEvents = proto.additiveEvents;

    if (Ext.os.is.Desktop && supports.TouchEvents && !supports.PointerEvents) {
        eventMap.touchstart = 'mousedown';
        eventMap.touchmove = 'mousemove';
        eventMap.touchend = 'mouseup';
        eventMap.touchcancel = 'mouseup';

        additiveEvents.mousedown = 'mousedown';
        additiveEvents.mousemove = 'mousemove';
        additiveEvents.mouseup = 'mouseup';
        additiveEvents.touchstart = 'touchstart';
        additiveEvents.touchmove = 'touchmove';
        additiveEvents.touchend = 'touchend';
        additiveEvents.touchcancel = 'touchcancel';

        additiveEvents.pointerdown = 'mousedown';
        additiveEvents.pointermove = 'mousemove';
        additiveEvents.pointerup = 'mouseup';
        additiveEvents.pointercancel = 'mouseup';
    }
});

Ext.define('EXTJS_23846.Gesture', {
    override: 'Ext.event.publisher.Gesture'
}, function (Gesture) {
    var me = Gesture.instance;

    if (Ext.supports.TouchEvents && !Ext.isWebKit && Ext.os.is.Desktop) {
        me.handledDomEvents.push('mousedown', 'mousemove', 'mouseup');
        me.registerEvents();
    }
});
0 голосов
/ 11 января 2011

Попробуйте комбинацию этих свойств, тогда вы получите typeahead, и это позволит выбрать:

editable : true,
typeAhead : true,
forceSelection : true,
disableKeyFilter : true,
triggerAction : 'all',
mode : 'local'
...