将json映射到extjs模型

时间:2013-03-09 11:35:42

标签: extjs extjs4

我正在使用ExtJs4而且我有json轰鸣声。 将它映射到Extjs Models时遇到一些问题:

    {
      "success": true,
      "data": {
        "bairro": "Vila Paulista",
        "cep": "86730-000",
        "convenio_id": 52,
        "nome": "Peter Parker",
        "consultas": [
          {
            "data": "08/08/2008",
            "paciente_id": 200,
            "senha": null
          },
          {
            "data": "22/02/2010",
            "paciente_id": 200,
            "senha": null
          },
        "convenio": {
          "id": 52,
          "nome": "C80"
        }
      }
    }

这是我的模特:

Ext.define('App.model.vo.Paciente', {
    extend: 'Ext.data.Model',
    requires: [
        'App.model.vo.Consulta',
        'App.model.vo.Convenio'
    ],
    fields: [
        {name: 'id', type: 'auto'},
        {name: 'bairro', type: 'auto'},
        {name: 'cep', type: 'auto'},
        {name: 'convenio_id', type: 'auto'},
        {name: 'nome', type: 'auto'}
    ],
    belongsTo: { 
        model: 'App.model.vo.Convenio', 
        name: 'convenio', 
        foreignKey: 'convenio_id', 
        getterName: 'getConvenio'},
    hasMany: { 
        model: 'App.model.vo.Consulta', 
        name: 'consultas'},
        idProperty: 'id',
    proxy: {
        type: 'rest',
        url : '/pacientes',
        format: 'json',
        reader: {
            root: 'data',
            successProperty: 'success'
        },
        writer: {
            getRecordData: function(record) {
                return { paciente: record.data };
            }
        }
    }
});

并加载数据:

App.model.vo.Paciente.load(id, {
        success: function(rec) {
            console.log(rec.consultas());
            console.log(rec.getConvenio());
        }
    });

rec.consultas()非常好地显示所有子记录,但rec.getConvenio()向服务器发出请求以再次获取数据。

我需要使用json文件中已有的数据,在这种情况下:

    "convenio": {
      "id": 52,
      "nome": "C80"
    }

感谢。

1 个答案:

答案 0 :(得分:1)

我只需要声明:

{name: 'convenio', type: 'auto'}

在我的模型中删除belongsTo。