Sencha ExtJS 4 Связанный выпуск Combobox - PullRequest
0 голосов
/ 31 января 2012

Я экспериментирую с ошибкой в ​​ExtJS 4 Combobox AJAX Store.

У меня есть сетка со статьями, каждая статья имеет поставщика и категория , каждый поставщик предлагает товары, принадлежащие к определенной категории .Для того, чтобы отфильтровать сетку, я поставил 2 комбинации (Select Lists).Один для поставщика и один для категории .Эти комбинации получают свои значения с помощью AJAX из сценария php.

Все прошло хорошо, пока я не попытался связать комбинации следующим образом:

Когда пользователь выбирает категорию изполе со списком, поставщик Магазин обновляется с поставщиками, которые предлагают эту категорию (работает отлично!).

Пользователь выбирает поставщика из списка, и Категория Обновления магазина (обновление хорошо, как видно с Firebug).

Теперь моя проблема: если пользователь снова выберет комбинированный список категории , маска загрузки не исчезнет, ​​поэтому она не сможет изменить значение комбинированного списка.

Я тестировал, AJAX работает нормально, это просто проблема EXTJS 4 с маской загрузки.

Эта проблема возникает в обоих направлениях:

A)

1. Пользователь выбирает категорию

2. Пользователь выбирает поставщика

3. Пользователь НЕ МОЖЕТ выбрать категорию (маска загрузки не исчезнет)

И

B)

1. Пользователь выбирает поставщика

2. Пользователь выбирает категорию

3. Пользователь CANНе выбирайте поставщика (маска загрузки не исчезает)

РЕДАКТИРОВАТЬ:

Проблема, похоже, также возникает в этой ситуации (и наоборот: поставщик-> категория)

1. Пользователь выбирает категорию

2. Пользователь меняет категорию

3. Пользователь НЕ МОЖЕТ выбрать поставщика (маска загрузки не исчезнет)

Вот мои модели:

    Ext.define('Category', {
        extend: 'Ext.data.Model',
        fields: [
            { name: 'name'},
            { name: 'id'}
        ]
    });

    Ext.define('Supplier', {
        extend: 'Ext.data.Model',
        fields: [
            { name: 'name'},
            { name: 'id'}
        ]
    });

Вот мои магазины:

    var categoryStore = Ext.create('Ext.data.Store', {
        model: 'Category',
        autoLoad: true,
        remoteSort: true,
        proxy: {
            type: 'ajax',
            url: 'GetCategorysForSupplier',
            reader: {
                type: 'json',
                root: 'items'
            },
            extraParams: {
                supplier: 0
            }
        }
    });

    var supplierStore = Ext.create('Ext.data.Store', {
        model: 'Supplier',
        autoLoad: true,
        remoteSort: true,
        proxy: {
            type: 'ajax',
            url: 'getSuppliersForCategory.php',
            reader: {
                type: 'json',
                root: 'items'
            },
            extraParams: {
                category: 0
            }
        }
    });

А вот мои комбо:

    var categoryFilterCombo = Ext.create('Ext.form.field.ComboBox', {
        xtype: 'combo',
        store: categoryStore,
        displayField: 'name',
        valueField: 'id',
        fieldLabel: 'Category Filter',
        listeners: {
            change: function(field,newVal) {
                if (Ext.isNumeric(newVal)) {
                    supplierStore.proxy.extraParams.category = newVal;
                    articleStore.proxy.extraParams.category = newVal;
                    supplierStore.load();
                    articleStore.load();
                }
            }
        }
    });

    var supplierFilterCombo = Ext.create('Ext.form.field.ComboBox', {
        store: supplierStore,
        displayField: 'name',
        queryMode: 'local',
        valueField: 'id',
        fieldLabel: 'Supplier Filter',
        listeners: {
            change: function(field,newVal) {
                if (Ext.isNumeric(newVal)) {
                    categoryStore.proxy.extraParams.supplier = newVal;
                    articleStore.proxy.extraParams.supplier = newVal;
                    categoryStore.load();
                    articleStore.load();
                }
            }
        }
    });

С уважением,

Дэн Кернау

1 Ответ

1 голос
/ 18 февраля 2012

Ищите здесь ответ: http://www.sencha.com/forum/showthread.php?152324-4.0.7-ComboBox-bug-with-load-mask

Там лдонофрио говорит: Это ошибка 4.0.7, похоже, она решена в 4.1pr

Моя переопределение Код PHP:

Ext.override(Ext.LoadMask, {
      onHide: function() { this.callParent(); }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...