저는 ExtJS (저는 버전 5.1을 사용하고 있습니다) 초보자이고 다른 파일에서 모 놀리 식 단일 파일 응용 프로그램을 분할하려고합니다. 나는 외부 파일을 별도의 파일로 옮겼습니다. 이것은 별도의 파일에 저장됩니다EXTJS Extending 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'
}
}
});
나는이 파일을 사용하는 경우 아약스 요청이 정확하고 내가 응답을 볼 수 있지만 가게와 rootProperty을 무시하고 대신 답변의 배열을 가지고있는 것처럼 보이는
[{success: 'true', answers: [{}, {}]}]
하지만 Ext.create를 사용하여 서브 클래 싱하지 않고 직접 상점을 작성하는 경우 ("내선 다음 store.getData()에서 나는 자바 스크립트 등으로 변환 전체 응답 첫 번째 값을 단일 항목의 배열을 .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가 확장되지 않습니다. 또한, 왜 당신은 그것을 싱글 톤으로 선언하고 있습니까? –
JsonStore 대신 Store를 사용해 주셔서 감사합니다. 작동하지만 왜 작동합니까? 내 모든 응용 프로그램에서이 유형의 단일 저장소가 필요하다는 것을 알기 때문에 Singleton을 만들었습니다. – wezzy