我已经定义了xtype,它是带有2列的简单网格和selModel:Ext.selection.CheckboxModel。
Ext.define('MySimpleType',
{
extend: 'Ext.grid.Panel',
alias: 'widget.MySimpleXType',
autoScroll: true,
store: mySimpleStore,
selModel: Ext.create("Ext.selection.CheckboxModel", {
checkOnly : true
}),
border: false,
columns: [
{
header: 'Code',
flex: 1,
sortable: true,
dataIndex: 'Code'
},
{
header: 'Name',
flex: 1,
width: 80,
sortable: true,
dataIndex: 'Name'
}
]
});
当我尝试在一个面板中多次使用此xtype时:不是为每个用法创建新的CheckboxModel,而是每个xtype使用已创建的CheckboxModel的相同实例。在这种情况下,第一个网格中会出现几个复选框列,并且不会以正确的方式运行。 你能告诉我如何解决这个问题吗? 最简单的解决方案是为每个xtype用法创建新的Ext.selection.CheckboxModel实例,但它会复制粘贴代码。
答案 0 :(得分:1)
解决方案是将selModel定义移动到网格的initComponent属性:
Ext.define('MySimpleType',
{
extend: 'Ext.grid.Panel',
alias: 'widget.MySimpleXType',
autoScroll: true,
store: mySimpleStore,
border: false,
columns: [
{
header: 'Code',
flex: 1,
sortable: true,
dataIndex: 'Code'
},
{
header: 'Name',
flex: 1,
width: 80,
sortable: true,
dataIndex: 'Name'
}
],
initComponent: function(){
this.selModel = Ext.create("Ext.selection.CheckboxModel", { checkOnly : true });
this.callParent(arguments); //it's necessary to call in order to initialize parent components of this grid
}
});