ExtJS4 хранить переопределение URL прокси - PullRequest
2 голосов
/ 06 октября 2011

Я пытаюсь повторно использовать магазин, изменив URL прокси (фактическая конечная точка, а не параметры). Можно ли переопределить прокси-URL для экземпляра магазина с помощью следующего синтаксиса:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{proxy:{url:'task/my.json'}}),
}

если прокси уже хорошо определен в определении Store?

РЕДАКТИРОВАТЬ : Исходный код AbstractStore устанавливает прокси следующим образом

    if (Ext.isString(proxy)) {
        proxy = {
            type: proxy    
        };
    }

РЕШЕНИЕ : store.getProxy (). Url = 'task / myMethod.json';

Ответы [ 4 ]

4 голосов
/ 06 октября 2011
{
    ... some tab config ...
    store: Ext.create('MyApp.store.MyTasks'),
    listeners: {
        afterrender: function(tab) {
            tab.store.getProxy().url = 'task/myMethod.json'; //<--Saki magic :)
            tab.store.load();
        }
    }
}

http://www.sencha.com/forum/showthread.php?149809-Reusing-Store-by-changing-Proxy-URL

3 голосов
/ 06 октября 2011

Вы не можете переопределить URL-адрес одного прокси при создании магазина. Вам нужно будет пройти полный прокси. Это потому, что библиотека заменяет прокси в целом! Итак, что вы можете сделать:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{
            proxy: {
                type: 'ajax',
                url : 'task/my.json',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }),
}

Теперь еще одна возможность - изменить конечную точку после того, как у вас будет экземпляр store. Если вам нужно загрузить хранилище из другой конечной точки, вы можете использовать метод загрузки.

store.load({url:'task/others.json'});

Поскольку в вашем случае вы пытаетесь повторно использовать магазин, вы можете передать весь прокси-сервер. Конструктор вашего магазина (MyApp.store.MyTasks) должен быть способен обрабатывать новую конфигурацию и применять ее к магазину ... Вот пример:

constructor: function(config) {

    this.initConfig(config);
    this.callParent();
} 
0 голосов
/ 17 сентября 2012

У меня есть BaseStore, который я использую для хранения настроек по умолчанию.

Ext.define('ATCOM.store.Shifts', {
    extend : 'ATCOM.store.BaseStore',
    model : 'ATCOM.model.Shift',
    constructor : function(config) {
        this.callParent([config]);
        this.proxy.api = {
            create : 'shifts/create.json',
            read : 'shifts/read.json',
            update : 'shifts/update.json',
            destroy : 'shifts/delete.json',
        };
    }
});
0 голосов
/ 06 октября 2011

Используйте метод store.setProxy(). Ссылка здесь:

...