1

我正在使用 ExtJs4,我有下面的 json。将其映射到 Extjs 模型时遇到一些问题:

    {
      "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"
    }

谢谢。

4

1 回答 1

1

我只需要声明:

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

在我的模型中并删除 belongsTo 的东西。

于 2013-03-10T01:09:42.010 回答