2011-04-27 3 views
2

나는 JSON을 처음 사용하면서 어둠 속에서 범벅 거리고있는 Sencha Touch의 새로운 면책 조항부터 시작하겠습니다. 옳은 방향으로 어떤 도움이나 찌르는 것이 당신이 아는 것 이상으로 감사합니다!JSON 피드의 중첩 된 객체에 액세스 - Sencha Touch

내 앱이 공개 Google 스프레드 시트 JSON 피드에서 데이터를 가져 오도록하려고합니다. 내가 알아 낸 것에서부터, 현재 모델은 중첩 된 객체가 아닌 JSON 배열을 기반으로합니다. 중첩 된 객체를 액세스하고 반환하려면 어떻게해야합니까?

Ext.regModel('Count', { 
    fields: [{name:'$t'}] 

}); 

this.list = new Ext.List({ 
      itemTpl: new Ext.XTemplate('<div>{$t}</div>'), 
      loadingText: false, 
      store: new Ext.data.Store({ 
       model: 'Count', 
       proxy: { 
        type: 'scripttag', 
        url : 'http://spreadsheets.google.com/feeds/cells/0AuYDRk91MX8-dHhkV29ZVkRGNjlvZjV4QVBIVmJubVE/odb/public/basic?range=A1&alt=json', 
        reader: { 
         type: 'json', 
         root: 'feed' 
        } 
       } 
      }) 
     }); 

JSON 데이터 (여분의 물건이 될 필요는 차라리 게시하지 않는 게 좋을 이메일 주소를 포함하고 색인을 경우 모두 표시됩니다 위의 링크 제거) :

{ 
    "feed":{ 
     "entry":[{ 
      "content":{ 
       "type":"text", 
       "$t":"11" 
      } 
     }] 
    } 
} 

나는 경우, 배열을 사용하는 또 다른 JSON 피드를 사용하자. $ t에 해당하는 객체의 정수에 액세스하려면 어떻게해야하는지 알 수 없다. "entry"를 "feed"대신 루트로두면 "Uncaught TypeError : 속성 'length'을 읽지 못합니다."라는 오류 메시지가 나타납니다.

+0

'root : 'feed.entry''와 같이 시도해보세요. 원하는 것을 한 걸음 더 가까이 가야합니다. – nelstrom

+0

@nelstrom 감사합니다! 그것은 나를 좀 더 가깝게 만들었다. 자, 내 목록은 하나의 목록 항목을 생성합니다 (JSON 피드는 하나의 결과 만 가져옵니다). 그러나 $ t 객체 내용에는 여전히 액세스 할 수 없습니다. 내 업데이트 된 regModel은 다음과 같습니다 :'Ext.regModel ('Count', { fields : [{name : '$ t', 매핑 : 'content. $ t'}] }) ' – Kate

+0

@nelstrom 사실, 잘 했어 !! 목록 항목 템플릿이 {$ t} 변수에서 해당 달러 기호를 좋아하지 않는다는 사실이 드러납니다. 매핑을 사용하여 임의의 이름으로 모델과 모델을 전환하면 작업이 시작됩니다! 'Ext.regModel ('Count', {fields : [{name : 'count', 매핑 : 'content. $ t'}]}))' – Kate

답변

4

해결책! Sencha는 내 템플릿 변수에서 $를 싫어했습니다.

Ext.regModel('Count', { 
    fields: [{name:'count', mapping:'content.$t'}] 

}); 

this.list = new Ext.List({ 
      itemTpl: new Ext.XTemplate('<div>{count}</div>'), 
      loadingText: false, 
      store: new Ext.data.Store({ 
       model: 'Count', 
       proxy: { 
        type: 'scripttag', 
        url : 'http://spreadsheets.google.com/feeds/cells/0AuYDRk91MX8-dHhkV29ZVkRGNjlvZjV4QVBIVmJubVE/odb/public/basic?range=A1&alt=json', 
        reader: { 
         type: 'json', 
         root: 'feed.entry' 
        } 
       } 
      }) 
     });