好吧,我有一个视口(viewport)分为两半,顶部和底部。上半部分有始终可见的组合框和输入字段,下半部分有一个带有多个选项卡的选项卡面板。
当我更改上半部分的静态组合框之一时,我将其称为组合框 A
,它会在其事件处理程序 A_handler
中触发一个事件>,它将尝试在其中一个选项卡中设置另一个组合框的样式,我将其称为组合框 B
,但它可能会执行以下两种操作之一。
组合框 B
在选项卡 2
上可见,而不是 1
。
那么:
1) 如果选项卡 1
处于事件状态,它将设置一个事件处理程序,以在选项卡 2
处于事件状态时设置组合框 B
的样式.
2)否则,它会立即设置样式。
所以问题是:初始组合框 A
可以使用两种可能的方式之一设置组合框 B
的样式,具体取决于选择,例如 red
和蓝色
。
想象一下选项卡 1
可见的情况,我选择将 B
样式设置为 red
的选项,那么事件处理程序是为激活选项卡 2
时创建。但是,然后,在不激活选项卡 2
的情况下,我在组合 A
中再次更改选项,以使框 B
为 蓝色
>.
此时,我需要它删除第一个事件处理程序,以便只触发一个事件处理程序。
我没有对事件处理程序的引用,但我已经命名了它们。
我已经创建了函数来获取选项卡2
上的事件监听器列表,并且知道要删除的监听器的名称,因此我可以匹配名称,但是当我尝试使用选项卡的 removeListener
删除它们,所以什么也不会发生。
最佳答案
您可以将事件处理程序设置为仅工作一次:
someItem.on('event', function() {
// ... bla bla bla ...
}, scope, {single:true});
关于javascript - 仅根据函数名称从组件中删除事件监听器 - Ext Js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460129/