ExtJS 6.7 Modern - Ext.grid.Tree selectOnExpander 在节点加载时不起作用

ExtJS 6.7 Modern - Ext.grid.Tree selectOnExpander doesnt work on node load

我正在使用 ExtJS 6.7 Modern 工具包,当从远程服务器加载可扩展节点的数据时,Ext.grid.Tree.selectOnExpander = false 无法正常工作,即当我单击扩展器时选择了节点。

我希望在这种情况下不会像数据已加载时那样选择节点。

检查 this fiddle 作为示例 - 尝试在节点加载时和尚未加载时使用扩展器展开节点。


到目前为止,我已尝试检查已触发的 Ext.util.Observable.capture and it seems like extra childtap 事件。我还不明白为什么。对我来说似乎是个错误。

到目前为止我找到的最佳解决方案是像这样覆盖 Ext.grid.Tree onChildTap method (inherited from 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);
        }
    },
});

他们好像忘了实现逻辑。

根据我建议使用此代码段的代码。 它使用相同的样式扩展了 Ext.dataview.List 的逻辑。

煎茶Fiddle: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;
    }

});