Я - разработчик ExtJS (я использую версию 5.1), и я пытаюсь разделить монолитное однофайльное приложение в разных файлах. Я переместил магазин в отдельный файл. Это магазин в отдельном файле:EXTJS Расширение Ext.data.JsonStore
Ext.define("MT.store.MicroProfilerStore", {
extend: "Ext.data.JsonStore",
singleton : true,
model : 'MT.model.MicroProfilerModel',
storeId: "micro_profiler_store",
autoLoad: false,
proxy: {
type: 'ajax',
url: './backend/profiler.php',
reader: {
type: 'json',
rootProperty: 'answers'
}
}
});
Если я использую этот файл на основе AJAX запрос правильно и я могу видеть ответ, но это выглядит как магазин игнорирует rootProperty и вместо того, чтобы массив ответов в store.getData() у меня есть один массив элемента с первым значением, весь ответ преобразуется в Javascript, как:
[{success: 'true', answers: [{}, {}]}]
Но если я создаю магазин непосредственно без подклассов, используя Ext.create ("Ext .data.JsonStore ", {...}) он работает!
Рубить, что я нашел после того, как день пытаясь, что позволяет мне держать отдельный файл для магазина заключается в следующем:
Ext.define("MT.store.MicroProfilerStore", function(){
Ext.require(['MT.model.MicroProfilerModel'], function(){
Ext.create("Ext.data.JsonStore", {
singleton : true,
model : 'MT.model.MicroProfilerModel',
storeId: "micro_profiler_store",
autoLoad: false,
proxy: {
type: 'ajax',
url: './backend/profiler.php',
reader: {
type: 'json',
rootProperty: 'answers'
}
}
});
});
return {};
});
Тогда я могу получить в магазин, используя StoreManger.lookup(). Хорошо, он работает нормально, но вопрос в том, почему?
PS Я уже пробовал поджимать модель до магазина, в явной форме требует модели и магазина во многих местах он не выглядит как ошибка старшинства
Спасибо за вашу помощь
Не расширяйте JsonStore, просто расширяйте Store. Кроме того, почему вы объявляете его одиночным? –
Спасибо, используя Store вместо JsonStore, он работает, но почему? Я создал синглтон, потому что мне сложно, что мне нужно один магазин этого типа во всем моем приложении. – wezzy