如何创建Extjs模型及其与其他模型的关联

时间:2014-01-20 10:40:01

标签: extjs

大家好,                我是EXTJS的新手,想要根据json响应掌握Extjs模型及其复杂性。例如,我有一个示例Json响应,我想为其创建一个模型

这是我的app.js文件

Ext.application({     要求:['Ext.container.Viewport'],     名称:'AM',

appFolder: 'app',

launch: function() {
    console.log('I am in app');
    var store = Ext.create('AM.store.ExampleStore');
    store.load();
    console.log('After Loading the records');
}

});

这是json样本

    [
        {
            "page": "0",
            "data": [
                {
                    "firstname": "puneet",
                    "id": "28170",
                    "lastname": "srivastava",
                    "area": "bangalore",
                    "profession": "Engineer"
                },
                {
                    "firstname": "v Durga",
                    "id": "28171",
                    "lastname": "Mallikrjuna",
                    "area": "bangalore",
                    "profession": "Extjs developer"
                }
            ]
        }
    ]

我根据自己的理解创建了模型。模型属于json的数据部分

Ext.define('AM.model.Example', {
    extend: 'Ext.data.Model',
    fields: ["firstname", "id", "lastname", "area", "profession"],
    belongsTo : 'AM.model.Page'
});
Ext.define('AM.model.Page', {
    extend: 'Ext.data.Model',
    fields: ["page", "data"],
    hasMany:{ model:"AM.model.Example", name: "example", associationKey : "data" }
});
Ext.define('AM.store.ExampleStore', {
extend: 'Ext.data.Store',
model : "AM.model.Page",    
 proxy: {
    type: 'ajax',
    url: 'example.json',
    reader: {
        type: 'json',
        root: 'spaces'
    }
},
listeners : {
        'load' : function(store, records, successful) {
                    console.log('Loading the records');
                    console.log(store.data);
                }
     }
})

我在记录仅包含{page:0}的商店并且缺少数据部分后获得的数据。

只是想知道我在哪里犯了错误或者我没有在商店或模特中包含任何东西。

谢谢

1 个答案:

答案 0 :(得分:0)

模型应该是:

Ext.define('AM.model.Example', {
   extend: 'Ext.data.Model',
   fields: [
     {name: 'firstname', type: 'string'},
     {name: 'id', type: 'int'},
     ...
});

在您的情况下,root应为data。 Root表示Json对象的主节点。

    Ext.define('AM.store.ExampleStore', {
    extend: 'Ext.data.Store',
    model : "AM.model.Page",    
     proxy: {
        type: 'ajax',
        url: 'example.json',
        reader: {
            type: 'json',
            root: 'data'
        }
    },
    listeners : {
            'load' : function(store, records, successful) {
                        console.log('Loading the records');
                        console.log(store.data);
                    }
         }
    })