我有一个模型和商店设置,用于从服务器接收JSON数据。服务器正在发送一个Enum Set字段。我的模型将该字段作为数组接收。我有一个网格,每个可能的枚举值(只有3个值)的列作为网格中的复选框,我希望复选框显示是否在数组中设置了枚举。当用户更新复选框时,需要更新记录。
在ExtJS 6中这样做的适当方法是什么?我看过计算和转换,但这似乎只对显示数据有用,它看起来不会有助于更新记录。
Ext.define('App.Model', {
extend: 'Ext.data.Model',
fields: [{
name: 'enumSet',
type: 'auto'
}, //[A,B,C]
],
});
Ext.define('App.Grid', {
extend: 'Ext.grid.Panel',
columnConfig: function() {
return [{
text: 'A',
xtype: 'checkcolumn',
dataIndex: 'enumSet'
},
{
text: 'B',
xtype: 'checkcolumn',
dataIndex: 'enumSet'
},
{
text: 'C',
xtype: 'checkcolumn',
dataIndex: 'enumSet'
},
];
},
});
答案 0 :(得分:0)
您要搜索的是serialize
方法,我想:
Ext.define('App.Model', {
extend: 'Ext.data.Model',
fields: [
{name: 'enumSet', type: 'auto', serialize: function(v, rec) {var arr = []; if(rec.get('A')) arr.push('A'); if(rec.get('B')) arr.push('B'); if(rec.get('C')) arr.push('C'); return arr; }},
{name: 'A', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('A')>-1},
{name: 'B', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('B')>-1},
{name: 'C', convert: function(v, rec) {if(v!==undefined) return v; return rec.get("enumSet").indexOf('C')>-1}
],
});