Gridview 使用CheckboxModel的多个网格

Gridview 使用CheckboxModel的多个网格,gridview,extjs,checkbox,Gridview,Extjs,Checkbox,我已经定义了xtype,它是一个简单的网格,有两列和selModel:Ext.selection.CheckboxModel Ext.define('MySimpleType', { extend: 'Ext.grid.Panel', alias: 'widget.MySimpleXType', autoScroll: true, store: mySimpleStore, selModel: Ext.create("Ext.selection.Check

我已经定义了xtype,它是一个简单的网格,有两列和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实例,但它会粘贴代码副本。

解决方案是将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
    }
});