如何将嵌套的JSON映射到具有关联的Sencha模型?

时间:2013-09-20 18:13:30

标签: extjs sencha-touch

相关的Sencha Touch模型不是从JSON映射的,我不知道我错过了什么。

Sencha Touch模特

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

  config: {
    fields: [
      'name',
      {name: 'lat', type: 'float'},
      {name: 'long', type: 'float'}
    ],
    hasMany: {model: 'MyApp.model.Forecast', name: 'forecast'}
  }
});

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

  config: {
    fields: [
      {name: 'date', type: 'date'},
      {name: 'sunshine', type: 'int'},
      {name: 'temperature', type: 'float'}
    ],
    belongsTo: 'MyApp.model.Station'
  }
});

JSON

{
    "name": "some name",
    "lat": 11.5716,
    "long": 4.68715,
    "forecast": [
        {
            "date": "2013-09-20 13:00:00",
            "sunshine": "11"
        },
        {
            "date": "2013-09-20 14:00:00",
            "sunshine": "19"
        }
    ]
}

简单字段映射得很好,但forecast数组仍未定义。如果我完全删除Forecast模型并将forecast声明为简单字段(请参阅以下代码段),则映射按预期工作。有什么想法吗?

Ext.define('SunApp.model.Station', {
  extend: 'Ext.data.Model',

  config: {
    fields: [
      'name',
      {name: 'lat', type: 'float'},
      {name: 'long', type: 'float'},
      'forecast'
    ]
  }
});

当然是一个有效的解决方案"总比没有好,但缺点是我没有声明并因此记录的预测模型。

1 个答案:

答案 0 :(得分:1)

也许您错过了associationKey配置。协会如何运作肯定存在一些怪癖!