开发者

Sencha Touch - access 1 to 1 model relationship

I'm trying to access the following JSON from my model store. I have no problem accessing the root (Name and Address) but i can't access anything in Financials (NetWorth or Income). I've verified the JSON below is being returned fro开发者_运维问答m the server.

I know this has to be super easy but every example I've seen is showing how to access a 1 to many relationship. My model is a 1 to 1. Person->Financials. Right now I don't have any associations setup as I don't know how to setup a 1 to 1 relationship. I've tried associations, I've tried belongsTo, I've tried Financials.NetWorth from inside my itemTPL. Nothing.

Can someone please show me the light?

JSON returned from server

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

I registered my Models.

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

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

And registered the store

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

and displaying back in a list

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

Any help would be much appreciated.


Beginner myself too, but it seems follwing could help (not tested with your code)

Have only on model:

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'},
  ],
});

and in template code refer with the names

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

becomes

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


You say that your relationship is 1-to-1, but your JSON data returns an array(with 1 item, but nonetheless an array, because you use "[]" brackets) for Financials. This means that Person should become something like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜