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

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


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


  // {名称:“ levels”,类型:“ array”}


是一个数据数组,我想在动态创建的网格列中显示它们。
我认为也许extjs模型上的关联可能会给我带来一个解决方案,但是我对如何使用它们感到困惑。任何解决方案都将适用。

最佳答案

只需使用以下类型:“自动”设置,您的阵列将保持不变。

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


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

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];
        }
    }
]


如果要按数组中的项目动态添加列,则实际上必须找出哪个记录​​中包含项目最多的数组,然后将所需数量的列添加到列数组中,然后设置网格的列使用.configure方法。这可能是在商店的load事件上完成的。

关于javascript - 数据数组作为extjs中的模型属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15201099/

10-09 22:19
查看更多