【问题标题】:ExtJS 6.7 Modern - Ext.grid.Tree selectOnExpander doesnt work on node loadExtJS 6.7 Modern - Ext.grid.Tree selectOnExpander 在节点负载上不起作用
【发布时间】:2019-12-19 22:12:16
【问题描述】:
【问题讨论】:
标签:
javascript
extjs
extjs6
【解决方案1】:
他们好像忘记实现逻辑了。
从代码中我建议使用这个 sn-p。
它使用相同的样式扩展了 Ext.dataview.List 的逻辑。
煎茶小提琴:Fiddle
Ext.define('Portal.grid.Tree', {
override: 'Ext.grid.Tree',
shouldSelectItem: function(e) {
var me = this,
no = !me.callParent([e]),
cmp;
if (!no && !me.selectOnExpander) {
cmp = e.getTarget();
no = cmp.classList.contains('x-expander-el');
}
return !no;
}
});
【解决方案2】:
到目前为止,我发现的最佳解决方案是重写 Ext.grid.Tree onChildTap 方法(继承自 Ext.dataview.Abstract),如下所示:
Ext.define('Portal.grid.Tree', {
override: 'Ext.grid.Tree',
/** Override Ext.dataview.Abstract onChildTap method for correct processing selectOnExpander property **/
onChildTap: function(location) {
if (this.getSelectOnExpander() || location.event.target !== location.cell.expanderElement.dom) {
this.callParent(arguments);
}
},
});