ExtJS5:TreePanel select 事件触发两次

ExtJS5: TreePanel select event firing twice

我做了一个 Fiddle 测试用例来重现我的问题:select 事件被触发了两次。即使 selectionchange 也是如此。但是 cellclick 只触发一次。 我使用 ExtJS5.1.1 GPL.

注意:必须先单击“加载”按钮(左侧)。

监听器被添加到事件中两次,这是 Sencha Framework 中与 locked/normal treegrid 相关的错误,已在 5.1.2 中修复。似乎监听器被添加到锁定网格的监听器对象一次,一次添加到普通网格的监听器对象,并且因为两个网格使用完全相同的对象,该对象将包含两次监听器。

一个快速修复似乎是从侦听器配置中删除 select 侦听器并将其仅添加到其中一个网格:

Ext.ComponentQuery.query('viewport treepanel[isLocked=true]')[0].on('select', function(treepanel, record, index) {
    console.log('select', index);
});

这看起来像是一个错误...

一个丑陋的解决方法是使用 buffer。您可以这样设置侦听器:

select: {
  buffer: 1,
  fn: function(treepanel, record, index) {
     console.log('select', index);
  }
}