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

时间:2014-05-18 03:39:17

标签: extjs javascript-events event-handling extjs4

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

我必须为Panel1,Panel2做不同的操作。如果Panel1被激活,并且当使用时单击apply,它将调用一些处理程序。但是,当panel2被激活时,它会调用panel1的处理程序。那么,我该怎么办?

这是我对调用处理程序的引用      'myxtype button[action=apply]':{ click: someFunction } 有没有办法为panel1和panel2做同样的应用按钮操作?或其他什么?

谢谢:)

1 个答案:

答案 0 :(得分: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个不同的函数