У меня есть приложение ExtJS 5.1.2, которое использует во всем приложении глобальный набор параметров конфигурации, определенный в app_dir/app/Application.js, который выглядит так:
launch: function () {
Ext.Loader.setConfig({enabled: true});
// Static parameters
cardioCatalogQT.config = {
mode: 'test', // switch to control use of staging or production server
//protocol: 'https://',
protocol: 'http://',
//host: 'production_server',
//host: 'test_server,
host: '127.0.0.1:5000',
apiGetQ: '/get_query/',
//apiGetQ: '/api/get_query/',
apiWriteQ: '/remote_query_put',
apiReadQ: '/remote_query_get',
//apiMedsMenu: '/api/meds',
//apiMedsMenu: '/meds',
remove: 'none'
};
// TODO - Launch the application
Ext.onReady(function () {
});
}
Таким образом, у меня есть только одно место для изменения параметров, составляющих url в вызовах Ajax, (в данном случае protocol, host и apiGetQ, например, дать mr возможность установить url = cardioCatalogQT.config.protocol + cardioCatalogQT.config.host + cardioCatalogQT.config.apiGetQ), чтобы в одном месте изменить адрес сервера с разработка -> тестирование -> производство, вместо того, чтобы искать все ссылки в приложении.
Однако из-за того, как загружаются ExtJ, я не могу использовать эти параметры конфигурации в хранилищах данных, использующих прокси-серверы для отдыха, поскольку эти хранилища, похоже, загружаются перед элементами в Ext.Loader.
Например, у меня есть следующий магазин:
Ext.define('cardioCatalogQT.store.Diagnoses', {
extend: 'Ext.data.Store',
alias: 'store.Diagnoses',
config:{
model: 'cardioCatalogQT.model.Diagnosis',
storeId: 'Diagnoses',
autoLoad: true,
proxy: {
type: 'rest',
url: 'http://127.0.0.1:5000/menu/diagnoses',
//url: 'http://test_server/menu/diagnoses',
//url: 'https://prod_server/api/menu/diagnoses',
reader: {
type: 'json',
rootProperty: 'menu_test'
}
}
}
});
Итак, когда я перехожу от среды тестирования к среде разработки, например, я должен явно изменить n разных ссылок для URL-адреса в моих n магазинах, которые имеют прокси-серверы для отдыха.
Есть ли способ определить объект конфигурации, чтобы я мог использовать его для этих магазинов? Я просмотрел несколько примеров предварительного загрузчика, но, похоже, не было задокументировано никаких вариантов использования для глобального объекта конфигурации, также я пытался реализовать маску загрузки в предварительном загрузчике, но это действительно испортило поведение моего приложения.