ExtJS将数据从关联的Store加载到Form

时间:2014-06-03 00:41:26

标签: extjs extjs4 extjs4.1

我有一个表单,其中包含Employee Model的字段和Person Model的字段。

员工模型

Ext.define('App.model.Employee', {
    extend: 'Ext.data.Model',
    fields: [{
            name: 'EmployeeId',
            type: 'int'
        },  
        {
            name: 'PersonId',
            type: 'int'
        },
        'EmployeeNumber',
        'JoinDate'
    ],  
    belongsTo: 'App.model.Person'
});

人物模型

Ext.define('App.mode.Person', {
    extend: 'Ext.data.Model',
    fields: [{
            name: 'PersonId',
            type: 'int'
        },  
        'FirstName',
        'LastName'
    ],
    hasMany: {
        model: 'App.model.Employee',
        name: 'Employees'
    }   
});

我的商店:

var store = Ext.create('Ext.data.Store', {
    model: 'App.model.Employee',
    autoLoad: false,
    autoSync: true,
    proxy: {
        type: 'ajax',
        api: {
            read: 'api/employee/getemployee'
        },
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'data',
            messageProperty: 'message'
        }
    }
});

这是我的实际JSON

"data": [{
        "EmployeeId": 5,
        "PersonId": 1,
        "EmployeeNumber": 2001,
        "JoinDate" : "",
        "Person": {
            "PersonId": 1,
            "FathersLast": "SMITH",
            "FirstName": "JOHN"
        }
    }],

我的问题是我的json响应(来自服务器)应如何构建以便加载存储成功?

2 个答案:

答案 0 :(得分:0)

您可以在Ext data package guide“加载嵌套数据”部分找到解释和示例代码。其他例子在Association documentation的标题中。两个示例JSON文件都显示了所需的结构。

答案 1 :(得分:0)

在查看您的代码和json结构后,我可以识别出每个员工都有一个person对象,因此您需要更正您的映射。不要在人员模型中定义hasMany关系,而应为员工中的人员定义hasOne关系。

hasOne:{         型号:' App.mode.Person',         姓名:'人物'     }

请试一试。你的json结构看起来不错。