ExtJS 4.1 - 嵌套的hasOne在JSON中关联

时间:2012-07-20 19:35:16

标签: extjs extjs4.1

我有以下格式的JSON:

{
    "id": 1,
    "arbitraryAttribute": "arbitraryValue",
    "thing": {
        "thingKey1": "thingValue1",
        "thinkKey2": "thingValue2"
    }
}

此模型的表示如下:

Ext.define("MyModel", {
    extends: "Ext.data.Model",
    fields: [
        {name: "id", type: "string"},
        {name: "arbitraryAttribute", type: "string"},
    ],
    hasOne: [
        {
            model: "Thing",
            name: "thing"
        }
    ]
});

Ext.define("Thing", {
    extends: "Ext.data.Model",
    fields: [
        {name: "thingKey1", type: "string"},
        {name: "thingKey2", type: "string"}
    ]
});

代理是一个简单的json代理。它所获得的JSON看起来就像我提出的那样,但我的记录似乎并不了解Thing模型。我需要设置任何额外的管道来让MyModel拉出嵌套的Thing json吗?

2 个答案:

答案 0 :(得分:1)

您忘了在MyModel中设置thing_id。这在ExtJs中根本不起作用。 你现在可以通过JSON设置thing_id,但不能像你那样设置整个对象(它应该)。

如果需要,它将通过模型代理自动加载整个对象。

答案 1 :(得分:0)

Ext.define('User', {
    extend:'Ext.data.Model',
    fields: ['id', 'name', 'status'],
    associations: [
        { type: 'hasOne', model: 'Status', associationKey: 'status'  }
    ]
});

Ext.define('Status', {
    extend:'Ext.data.Model',
    fields: ['id', 'title'],
});

Demo here