Sencha Touch -访问1对1模型关系



我试图从我的模型存储访问以下JSON。我没有问题访问根(名称和地址),但我无法访问任何财务(净值或收入)。我已经验证了下面的JSON是从服务器返回的。

我知道这必须非常简单,但我看到的每个例子都展示了如何访问1对多关系。我的模型是1比1。人->金融类股。现在我没有建立任何关联因为我不知道如何建立1对1的关系。我试过社团,试过归属,试过财务。NetWorth从我的itemTPL。没有。

谁能把灯指给我看一下?

服务器返回的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%",
    });

任何帮助都将非常感激。

我自己也是初学者,但似乎以下可以帮助(未与您的代码测试)

只有一个模型:

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>',  

您说您的关系是1对1,但是您的JSON数据返回一个数组(有一个项目,但仍然是一个数组,因为您使用了"[]"括号)。这意味着Person应该变成这样:

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

最新更新