ExtJS 4: изменение имен параметров хранилища

Прямо сейчас я столкнулся с проблемой, когда я не могу изменить имена параметров page, start, limit и dir для Ext.data.Store.

В ExtJS 3 я мог бы сделать это:

paramNames : 
{
    start : 'startIndex',
    limit : 'pageSize',
    sort : 'sortCol',
    dir : 'sortDir'
}

Я попытался добавить эту конфигурацию в Ext.data.Store для ExtJS 4, однако «start», «limit», «sort» и «dir» по-прежнему отображаются как имена параметров по умолчанию. Мне нужно иметь возможность изменить это, так как функциональность на стороне сервера требует этих имен параметров. Это также приводит к тому, что пейджинг и удаленная сортировка не работают, поскольку имена параметров не соответствуют тому, что ожидает ресурс на стороне сервера.

Итак, есть ли в ExtJS 4 новый способ изменить имена этих параметров, как в ExtJS 3?


person Albinoswordfish    schedule 18.06.2011    source источник


Ответы (4)


взгляните на прокси, см. http://docs.sencha.com/ext-js/4-0/#/api/Ext.data.proxy.Server directionParam,limitParam...

person atian25    schedule 18.06.2011
comment
как мне получить значения этих параметров по умолчанию? (ограничение, начало, сортировка) - person spauny; 10.01.2013

Чтобы динамически изменить параметры непосредственно перед load магазина, вы можете сделать это:

/* set an additional parameter before loading, not nice but effective */
    var p = store.getProxy();
    p.extraParams.searchSomething = search;
    p.extraParams.somethingelse   = 'This works too';

    store.load({
        scope   : this,
        callback: function() {
            // do something useful here with the results 
        }
    });
person jvandemerwe    schedule 05.07.2011
comment
Спасибо за эту информацию. Я искал callback. - person VMAtm; 29.02.2012

Используйте этот код:

proxy: {
    type: 'ajax',
    url: '/myurl',
    method: 'GET',
    **extraParams: { myKeyword: 'abcd' },**
    reader: {
        type: 'json',
        root: 'rows'
    }
}

Теперь вы можете изменить значение myKeyword с abcd на xyz следующим образом.

gridDataStore.proxy.extraParams.keyword='xyz';
gridDataStore.load();

это установит значение ваших параметров и перезагрузит магазин.

person Kunal    schedule 21.06.2011

Ключи были переименованы и перемещены на Ext.data. Объект .Proxy. Вот простой пример, который сообщает ExtJS использовать имена параметров Grails по умолчанию:

Ext.create('Ext.data.Store', {
    // Other store properties removed for brevity
    proxy: {
        // Other proxy properties removed for brevity
        startParam: "offset",
        limitParam: "max",
        sortParam: "sort",
        directionParam: "order",
        simpleSortMode: true
    }
});

Я также установил simpleSortMode, чтобы каждый из параметров отправлялся на сервер как отдельные параметры запроса.

person jstricker    schedule 19.11.2013