2013-05-14 4 views
0

Sencha Touch 2.1을 사용하여 모바일 앱을 구축하고 있습니다. 목록에 대한 데이터 소스로 Google 스프레드 시트를로드하려고합니다.Sencha Touch Ext.List가 포함 된 Google 스프레드 헬프 API

https://docs.google.com/spreadsheet/pub?key=0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E&output=html

그러나 나는 그것이 작동 얻을 수 없습니다입니다 :

나는이 링크에서 찾을 수 있습니다 구글 스프레드 시트 공개했다. 여기

내가 지금까지 가지고있는 코드 :

모델

Ext.define('MyApp.model.InfoList', { 
    extend: 'Ext.data.Model', 

    config: { 
     fields: [ 
      'Title', 
      'Description', 
      'Icon' 
     ], 
     idProperty: '_id' 
    } 
}); 

스토어

Ext.define('MyApp.store.InfoList', { 
extend : 'Ext.data.Store', 

config : { 
    model : 'MyApp.model.InfoList', 
    proxy: { 
     type: 'jsonp', 
     url : 'https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/basic?alt=json-in-script', 
     reader: { 
      type: 'json', 
      root: 'feed.entry' 
     } 
    } 

} 
}); 

보기

Ext.define('MyApp.view.home.infolist', { 
    extend : 'Ext.List', 
    xtype : 'infoListView', 
    disableSelection: true, 
    config : { 
     title : 'Info List', 
     itemTpl: [ 
        '<div class="itemInfo">', 
         '<div class="iconDiv">', 
          '<img src="{Icon}" class="icon"/>', 
         '</div>', 
         '<div class="descriptionDiv">', 
          '<div class="title">{Title}</div>', 
          '<div class="description">{Description}</div>', 
         '</div>', 
         '<div class="disclosureDiv">', 
          '<img src="images/infoListDisclosure.png" class="iconImage"/>', 
         '</div>', 
         '<div class="clear"></div>', 
        '</div>', 
       ].join(''), 
     store : 'InfoList' 
    } 
}); 

목록은 항상 비어 있습니다. 그리고 jsonp 대신 jsonp를 프록시에 사용하면 앱 실행이 중지됩니다.

경고에서 프록시로부터받은 응답을 확인하는 방법이 있습니까? 또는 문제가 될 수있는 어떤 징후가 인정됩니다.

추신 : IBM Worklight에서 응용 프로그램을 빌드하고 있지만 코드 작성에는 sencha를 사용하고 있습니다. 그 아무것도에게 영향을 미치는 있는지 확실하지 않습니다

감사합니다

답변

0

JSON 응답의 특성을 모델 필드 이름 반면 '제목'& '내용'같은 모든 소문자 '제목'& 같은 대문자로 첫 글자를 가지고 있습니다 '기술'. 또한 JSON에는 'Description'과 같은 필드가 없으며 'content'및 'title '데이터는'$ t '속성에 있습니다.

콘솔에서 파싱 된 JSON 객체를 덤프하고 살펴보고 속성을 올바르게 렌더링하는 방법을 이해할 것을 제안합니다. 대신 사용

한 가지 더 :

https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/basic?alt=json-in-script

사용이 :

https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/values?alt=json-in-script

entry 객체의 속성으로 열을 얻을 수 있습니다. 이 경우 모델을 다음과 같이 정의 할 수 있습니다.

Ext.define('MyApp.model.InfoList', { 
    extend: 'Ext.data.Model', 

    config: { 
     fields: [ 
      {name : 'id',type : 'string', mapping:'id.$t'}, 
      {name : 'Title',type : 'string', mapping:'gsx$Title.$t'}, 
      {name : 'Description',type : 'string', mapping:'gsx$Description.$t'}, 
      {name : 'Icon',type : 'string', mapping:'gsx$Icon.$t'} 
     ], 
     idProperty: 'id' 
    } 
});