2012-10-11 2 views
0

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

+0

유용 할 수도 있습니다 - 루트 아래에 ''을 추가하고 store.getTotalCount()를 호출했습니다. 'undefined'를 반환하는 getCount()와 달리이 메서드는 존재하지 않습니다. 그래서 가게가 전혀 초기화되지 않았습니까? – Yuriy

+0

트리 저장소에는 적용 할 수 없기 때문에 getCount()가 작동하지 않습니다. – Yuriy

답변

0

는이 문제를 함께 시간을 보낸 데 비슷한 질문에 대한 내 대답은 아마 관련 :

https://stackoverflow.com/a/12886943/454266이 나무처럼 보이는 XML 소스의 구조는 현재 버전의 프레임 워크에서 제대로 지원되지 않습니다. TreeStore 또는 연결 메커니즘 일 수 있습니다.

관련 문제