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);
}
}
我做了一个 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);
}
}