数据数组作为extjs中的模型属性

Yaz*_*ati 1 javascript extjs extjs4

我在这样的extjs中有一个模型:

Ext.define('Game', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int' },
        { name: 'Name', type: 'string' },
        //{ name: 'levels' , type:'array'},
    ]
});
Run Code Online (Sandbox Code Playgroud)

我想将此模型用于网格存储,但它的第三个属性

// {name:'levels',type:'array'}

是一个数据数组,我想在动态创建的网格列中显示它们.我想也许关于extjs模型的关联可能会给我一个解决方案,但我很困惑如何使用它们.任何解决方案都会受到关注.

Rei*_*ius 9

只需使用类型:'auto'设置,您的数组将不受影响.

Ext.define('Game', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int' },
        { name: 'Name', type: 'string' },
        { name: 'levels' , type:'auto'},
    ]
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用渲染器定义列,如下所示:

columns: [
    {
        text: "ID",
        dataIndex: "id"
    },
    {
        text: "Name",
        dataIndex: "Name"
    },
    {
        text: "Array Item 1",
        dataIndex: "levels",
        renderer: function(value){
             return levels[0];
        }
    },
    {
        text: "Array Item 2",
        dataIndex: "levels",
        renderer: function(value){
             return levels[1];
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

如果你想按数组中的项动态添加列,你实际上必须弄清楚哪个记录包含其中包含最多项的数组,然后根据需要向列数组添加任意数量的列,然后设置网格的列使用.configure方法.这可能是在商店的加载事件上完成的.