Sencha Architect에서 XML TreeStore를 사용하려고하는데 주어진 XML에서 데이터를로드하지 못합니다. 해당 저장소에 객체로 액세스 할 수 있지만 getCount()
은 'undefined'를 반환하고 getNodeById('foobar')
과 같은 메서드는 '속성을 읽을 수 없습니다'라는 '정의되지 않은'객체를 가져 오므로 매핑이 발생하지 않는다고 생각합니다 (저장소는 초기화되지만 구문 분석에 실패했습니다). 데이터/인스턴스 모델).Sencha Architect XML TreeStore가 XML로드/매핑에 실패했습니다
동일한 모델이지만 동일한 기본 설정의 플랫 저장소를 통해 액세스 한 동일한 XML이 정상적으로 작동합니다 (예 : getCount()
이 예상대로 2를 반환). JSON 버전의 데이터가 포함 된 트리 저장소는 다시 정상적으로 작동합니다.
입니다 :
Ext.define('MyApp.store.DocumentStore', {
extend: 'Ext.data.TreeStore',
requires: [
'MyApp.model.Document'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
storeId: 'TreeDocumentStore',
model: 'MyApp.model.Document',
proxy: {
type: 'ajax',
url: 'DocumentTemplates.xml',
reader: {
type: 'xml',
root: 'Templates',
record: 'Template'
}
}
}, cfg)]);
}
});
소스 XML 파일 저장소를 의미하는 것입니다 : 나는 '루트'속성의 목적을 잘못 이해 한 경우
<?xml version="1.0" encoding="UTF-8"?>
<Templates>
<Template>
<Id>A253338C-CDFA-4182-9E1C-652EAAB713F8</Id>
<Title>Template 1</Title>
<Children />
</Template>
<Template>
<Id>26D5B83C-7E9E-49E2-B174-F9A6C7BA07A8</Id>
<Title>Template 2</Title>
<Children />
</Template>
</Templates>
전역 루트와 가정 된 자식 노드 루트에 대해 다른 노드 이름을 시도했지만 판독기의 '루트'속성을 가능한 모든 값으로 설정했지만 행운은 없습니다.
노드에서 빈을 제거하려고했지만 동일한 효과가 나타납니다.
이것은 뷰에서 저장소의 항목을 표시하는 것이 아니며 컨트롤러의 데이터에만 액세스하려고합니다.
P. onLaunch
에 저장 한 XML 파일, 나무 저장 및 컨트롤러 액세스와 더미 프로젝트는 여기에 있습니다 : http://sdrv.ms/RAsj26
유용 할 수도 있습니다 - 루트 아래에 ''을 추가하고 store.getTotalCount()를 호출했습니다. 'undefined'를 반환하는 getCount()와 달리이 메서드는 존재하지 않습니다. 그래서 가게가 전혀 초기화되지 않았습니까? –
Yuriy
트리 저장소에는 적용 할 수 없기 때문에 getCount()가 작동하지 않습니다. – Yuriy