如何在 ExtJS4 上的 gridpanel 中覆盖侦听器
你好,如何在 ExtJS4 上覆盖 gridpanel 中的 itemclick ?我有一个带有别名 tableA 的网格面板,如下所示:
Ext.define('AM.test.TableA', {
extend: 'Ext.grid.Panel',
alias: 'widget.tableA',
initComponent: function() {
// tableA configurations
this.callParent(arguments);
}
});
我的 tableA 控制器如下所示:
Ext.define('AM.test.TableAController', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'tableA': {
itemclick: this.tableSelection
}
});
},
tableSelection: function(grid, record) {
console.log('tableA selection');
}
}
使用此配置,当我单击 tableA 中的某行时,我会在控制台中收到消息 “tableA 选择”。然后,我想将 tableA 扩展到 tableB,如下所示:
Ext.define('AM.test.TableB', {
extend: 'AM.test.TableA',
alias: 'widget.tableB'
});
我的 tableB 控制器如下所示:
Ext.define('AM.test.TableBController', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'tableB': {
itemclick: this.tableBSelection
}
});
},
tableBSelection: function(grid, record) {
console.log('tableB selection');
}
}
有了这个,当我单击 tableB 中的某行时。我在控制台对话框中收到消息“tableB 选择”,然后收到“tableA 选择”:
tableB selection
tableA selection
顺便说一句,我必须做什么才能覆盖“tableB”中“tableA”中的 itemclick?我不想在 tableA 上调用“itemclick”。
Hii howto override itemclick in gridpanel on ExtJS4 ? I have gridpanel with alias tableA like this :
Ext.define('AM.test.TableA', {
extend: 'Ext.grid.Panel',
alias: 'widget.tableA',
initComponent: function() {
// tableA configurations
this.callParent(arguments);
}
});
And my tableA controller like this :
Ext.define('AM.test.TableAController', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'tableA': {
itemclick: this.tableSelection
}
});
},
tableSelection: function(grid, record) {
console.log('tableA selection');
}
}
With this configuration, when i click some row in tableA i get message "tableA selection" in console. Then, i want to extends tableA to tableB like this:
Ext.define('AM.test.TableB', {
extend: 'AM.test.TableA',
alias: 'widget.tableB'
});
And my tableB controller look like this :
Ext.define('AM.test.TableBController', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'tableB': {
itemclick: this.tableBSelection
}
});
},
tableBSelection: function(grid, record) {
console.log('tableB selection');
}
}
With this, when i click some row in tableB. I get message 'tableB selection' and then 'tableA selection' like this in my console dialog:
tableB selection
tableA selection
Btw, what must i do to override itemclick from 'tableA' in 'tableB' ? I don't want to call 'itemclick' on tableA.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在 B 上使用 stopPropogation 来停止 itemclick 事件的冒泡
http://docs.sencha. com/ext-js/4-0/#!/api/Ext.EventObject-method-stopPropagation
Try using stopPropogation on B to stop the bubbling of the itemclick event
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.EventObject-method-stopPropagation