我在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/