ExtJ中的控制器如何处理事件,如下所示?如果所有按钮单击都通过了控制器,会大大降低它的速度吗?

Ext.define('App.controller.MyResults', {
    extend : 'Ext.app.Controller',
    stores : ['Store1', 'Store2'],
    models : ['MyModel'],
    views : ['myResults.Grid']
},

init: function() {
    this.control({
        'button': {
            click: this.refreshGrid
        }
    });
}


);

最佳答案

是的,这就是为什么,组件选择器应尽可能具体。在您的情况下,假设myResults.Grid定义为:

Ext.define('myResults.Grid', {
    extend: 'Ext.grid.Panel', // Not necessarily this class
    alias:  'widget.myresultsgrid', // xtype === 'myresultsgrid'
    ...
});


您可以将Controller定义为:

Ext.define('App.controller.MyResults', {
    extend: 'Ext.app.Controller',
    ...
    init: function() {
        this.control({
            'myresultsgrid button': {
                click: this.refreshGrid
            }
        });
    }
});


这将确保您的Controller仅在MyResults网格中的按钮上看到click事件。

10-06 05:19