2011-08-18 5 views
2

모델 저장소에서 다음 JSON에 액세스하려고합니다. 루트 (이름 및 주소)에 액세스하는 데 문제가 없지만 재무 (NetWorth 또는 소득)에 액세스 할 수 없습니다. 아래 JSON이 서버에서 반환되는지 확인했습니다.Sencha Touch - 1 대 1 모델 관계에 액세스

나는 이것이 매우 쉽다는 것을 알고 있지만, 내가 본 모든 예는 1 대 다수 관계에 액세스하는 방법을 보여줍니다. 내 모델은 1 대 1입니다. 개인 -> 금융. 지금은 1 대 1 관계를 설정하는 방법을 모르기 때문에 관련 설정이 없습니다. 나는 associationTo를 시도했는데, belongsTo를 시도했다. 나는 itemTPL 내부에서 Financials.NetWorth를 시도했다. 아무것도.

누군가가 내게 빛을 보여줄 수 있습니까?

는 JSON 내가 내 모델을 등록

[{ "PersonName": "John Smith", "Address": "123 main street", "Financials": [{ "NetWorth": "$500,000", "Income":"$67,000" }] }] 

서버에서 돌아왔다.

Ext.regModel('Person', { 
    fields: [ 
    {name: 'Name', type:'string'}, 
    {name: 'Address', type: 'string'}, 
    ], 
}); 

Ext.regModel('Financials',{ 
    fields: [ 
    {name: 'NetWorth', type:'string'}, 
    {name: 'Income', type: 'string'}, 
    ], 
}); 

그리고 가게

var commStore = new Ext.data.Store({ 
      model: 'Person', 
      proxy: { 
       type: 'ajax', 
       url : 'Business/GetData', 
       reader: { 
        type: 'json', 
       } 
      }, 
      autoLoad:false, 
     }); 

와 어떤 도움이 많이 주시면 감사하겠습니다

var commList = new Ext.List({ 
     fullscreen: false, 
     itemTpl : '<div>{PersonName}</div><div>{Business.NetWorth}</div>', 
     store: commStore, 
     height:500, 
     width:"100%", 
    }); 

목록에 다시 표시를 등록했다.

답변

1

하는 것은 너무 자신을 초보자하지만 도움이 될 수 follwing을 보인다

는 모델을 가지고 (당신의 코드를 테스트하지) : 이름으로 참조

Ext.regModel('Person', { 
    fields: [ 
    {name: 'Name', type:'string'}, 
    {name: 'Address', type: 'string'}, 
    {name: 'NetWorth', type:'string', mapping 'Financials.NetWorth'}, 
    {name: 'Income', type: 'string', mapping 'Financials.Income'}, 
    ], 
}); 

및 템플릿 코드에

itemTpl : '<div>{PersonName}</div><div>{Business.NetWorth}</div>', 

itemTpl : '<div>{PersonName}</div><div>{NetWorth}</div>', 
0

당신은 관계가 1 대 1이지만 JSON 데이터는 금융에 "괄호"를 사용하기 때문에 배열이 1 개의 항목을 갖지만 배열은 반환하지만 배열을 반환한다고 말합니다. 사람이 다음과 같이되어야 함을 의미합니다.

Ext.regModel('Person', { 
    fields: [ 
    {name: 'Name', type:'string'}, 
    {name: 'Address', type: 'string'}, 
    ], 
    hasMany: [ 
    {name: 'person', model: 'Person'} 
    ] 
});