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
事件。