如何在ExtJS6中处理控制器中的body元素事件?
我有一个基本网格面板,在其中一列中呈现自定义如何在ExtJS6中处理控制器中的body元素事件?,extjs,extjs6,Extjs,Extjs6,我有一个基本网格面板,在其中一列中呈现自定义元素。我试图捕捉这个元素上的点击事件,并在控制器中处理它们 问题是,在监听器中,此指的是窗口,因此我甚至不能触发事件 Ext.define('MyList', { extend: 'Ext.grid.Panel', xtype: 'mylist', controller: 'mylist', listeners: { body: { click: function(e, el){
元素。我试图捕捉这个元素上的点击事件,并在控制器中处理它们
问题是,在监听器中,此
指的是窗口
,因此我甚至不能触发事件
Ext.define('MyList', {
extend: 'Ext.grid.Panel',
xtype: 'mylist',
controller: 'mylist',
listeners: {
body: {
click: function(e, el){
//this.fireEvent('onTagClick');
},
delegate: 'span.tag',
scope: this
},
},
columns: [
{
text: 'Name',
dataIndex: 'name',
renderer: function(value, metaData, record){
return '<span class="tag">tag</span>' + value;
}
},
]
});
Ext.define('MyList'{
扩展:“Ext.grid.Panel”,
xtype:“mylist”,
控制器:“mylist”,
听众:{
正文:{
点击:功能(e、el){
//此.firevent('onTagClick');
},
委托:“span.tag”,
范围:本
},
},
栏目:[
{
文本:“名称”,
数据索引:“名称”,
渲染器:函数(值、元数据、记录){
返回'tag'+值;
}
},
]
});
我可以使用
Ext.GlobalEvents.firevent()
触发全局事件,但在重新加载网格后,由于重复事件调用而遇到一些奇怪的问题或bug。我想看看是否有办法避免全局事件。通过直接从控制器连接侦听器找到了一种解决方案,此
将引用控制器,然后:
Ext.define('MyListController', {
alias: 'controller.mylist',
init: function(){
this.getView().on({
body: {
click: function(e, el){
this.onTagClick(el);
},
delegate: 'span.tag',
scope: this
},
});
},
onTagClick: function(el) {
console.log("clicked", el);
},
});
通过直接从控制器连接侦听器找到了一种解决方案,
此
将引用控制器,然后:
Ext.define('MyListController', {
alias: 'controller.mylist',
init: function(){
this.getView().on({
body: {
click: function(e, el){
this.onTagClick(el);
},
delegate: 'span.tag',
scope: this
},
});
},
onTagClick: function(el) {
console.log("clicked", el);
},
});