Extjs4 查看访问控制器中定义的函数(最佳方式)

Extjs4 查看访问控制器中定义的函数(最佳方式),extjs4,Extjs4,我希望我的视图访问我的控制器中定义了一个函数 如果我在控制器中定义了一个函数,那么代码可以工作,如果没有,我会得到错误“UncaughtReferenceError:refreshSelection未定义” 怎么了 看法 控制器 Ext.define('ImpPdf.controller.GridControl', { extend: 'Ext.app.Controller', stores: ['GridStore'], models: ['Espelho'], views: ['Grid

我希望我的视图访问我的控制器中定义了一个函数

如果我在控制器中定义了一个函数,那么代码可以工作,如果没有,我会得到错误“UncaughtReferenceError:refreshSelection未定义”

怎么了

看法

控制器

Ext.define('ImpPdf.controller.GridControl', {
extend: 'Ext.app.Controller',


stores: ['GridStore'],
models: ['Espelho'],
views: ['GridView'],


refs: [ {ref: 'GridV',selector: 'grid'} ],


init: function() {


    //declaracao dos controles dos botoes
    this.control({
        'gridV': {
            deselect: this.deselectRow
        },
        'gridV': {
            select: this.selectRow
        },
        'gridV': {
            refresh: this.refreshSelection
        }

    });
},
selectRow: function(){
    console.log('selectRow-1');
},
deselectRow: function(){
    console.log('deselectRow-1');
},
refreshSelection: function(){
    console.log('refreshSelection-1');
},
你做错了! 不能使用控制器引用放置控制器操作。 相反,使用与网格相同的CSS选择器

所有功能都必须在控制器中。控件操作(this.Control)将函数与事件绑定

您的控制器必须如下所示:

Ext.define('ImpPdf.controller.GridControl', {
    extend: 'Ext.app.Controller',

    refs: [
        {
            ref: 'GridV',
            selector: 'grid'
        }
    ],

    selectRow: function(rowmodel, record, index, eOpts) {
       console.log('Foo');
    },

    init: function(application) {
        this.control({
            "grid": {
                select: this.selectRow
            }
        });
    }

});
在您看来,只需删除业务代码即可

Ext.define('ImpPdf.view.MyViewport', {
    extend: 'Ext.container.Viewport',

    requires: [
        'Ext.grid.Panel',
        'Ext.grid.column.Number',
        'Ext.grid.column.Date',
        'Ext.grid.column.Boolean',
        'Ext.grid.View',
        'Ext.toolbar.Paging'
    ],

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'gridpanel',
                    title: 'My Grid Panel',
                    store: 'GridStore',
                    columns: [
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'string',
                            text: 'String'
                        },
                        {
                            xtype: 'numbercolumn',
                            dataIndex: 'number',
                            text: 'Number'
                        },
                        {
                            xtype: 'datecolumn',
                            dataIndex: 'date',
                            text: 'Date'
                        },
                        {
                            xtype: 'booleancolumn',
                            dataIndex: 'bool',
                            text: 'Boolean'
                        }
                    ],
                    dockedItems: [
                        {
                            xtype: 'pagingtoolbar',
                            dock: 'bottom',
                            width: 360,
                            displayInfo: true,
                            store: 'GridStore'
                        }
                    ]
                }
            ]
        });

        me.callParent(arguments);
    }

});

好的,谢谢,但就像我在“pagingtoolbar”中单击时一样,选择工作也是如此,我只在单击复选框(selmodel)时才选择工作。我该怎么做?
Ext.define('ImpPdf.view.MyViewport', {
    extend: 'Ext.container.Viewport',

    requires: [
        'Ext.grid.Panel',
        'Ext.grid.column.Number',
        'Ext.grid.column.Date',
        'Ext.grid.column.Boolean',
        'Ext.grid.View',
        'Ext.toolbar.Paging'
    ],

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'gridpanel',
                    title: 'My Grid Panel',
                    store: 'GridStore',
                    columns: [
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'string',
                            text: 'String'
                        },
                        {
                            xtype: 'numbercolumn',
                            dataIndex: 'number',
                            text: 'Number'
                        },
                        {
                            xtype: 'datecolumn',
                            dataIndex: 'date',
                            text: 'Date'
                        },
                        {
                            xtype: 'booleancolumn',
                            dataIndex: 'bool',
                            text: 'Boolean'
                        }
                    ],
                    dockedItems: [
                        {
                            xtype: 'pagingtoolbar',
                            dock: 'bottom',
                            width: 360,
                            displayInfo: true,
                            store: 'GridStore'
                        }
                    ]
                }
            ]
        });

        me.callParent(arguments);
    }

});