Extjs单个组件有两个不同的处理程序

问题描述 投票:0回答:1

我有一个窗口,并且有两个子项panel1,panel2。我在停靠的项目中应用了按钮。按钮是窗口... panel1的一部分,而panel2没有按钮。

我必须对Panel1,Panel2做不同的操作。如果激活了Panel1,并且在使用时单击应用,它将调用某个处理程序,但是当激活panel2时,它将调用panel1的处理程序。所以,我该怎么办?

这是调用处理程序的参考:

'myxtype button[action=apply]':{
 click: someFunction
}

是否可以使用相同的“应用”按钮对panel1和panel2进行操作?还是其他?

extjs event-handling extjs4 dom-events
1个回答
4
投票

您需要在事件处理程序中进行切换:

'myxtype button[action=apply]': {
    click: this.someFunction
},

someFunction: function (button) {
    var tab = button.up('tabpanel').getActiveTab();
    if (tab.title === 'tabtitle1') { // insert title of tab1 here
        handlerForPanel1(); // insert function for tab1 here
    } else {
        handlerForPanel2(); // insert function for tab2 here
    }
}

在extjs中,每个事件类型的组件只能具有一个侦听器功能您不能根据此组件周围的情况分配其他处理程序因此,唯一的解决方案是在事件处理程序中调度事件并将其委托给2个不同的函数

© www.soinside.com 2019 - 2024. All rights reserved.