在extjs中,如何在双击时展开树

In extjs, How don't expand in tree on double click

本文关键字:双击 extjs      更新时间:2023-09-26

我想让我的树面板在双击时做点什么。

但是当我双击一个树节点时,该节点总是展开或折叠。

如何禁用此扩展或折叠发生时,我双击。

我的英语不是很好对不起!

声明treepanel时,可以在viewConfig中添加toggleOnDblClick: false,只需在viewConfig中添加其他属性:

{
    xtype: 'treepanel',   
    id: 'tree_id',
    name: 'tree_name',
    viewConfig: {
         toggleOnDblClick: false
    },
    width:....
}
yourTree.on('beforeitemdblclick', function() { return false; });

实际上,重写(Ext.tree.TreeNodeUI.override)不是一个好的做法(因为它改变了所有TreeNodeUI的应用程序的行为),所以我建议在当前树的TreeLoader中重写createNode方法:

new Ext.tree.TreePanel({
...
loader:new Ext.tree.TreeLoader({
            ...
            // override the CreateNode function
            createNode:function (attr) {
                attr.uiProvider = Ext.extend(Ext.tree.TreeNodeUI, {
                    // private
                    onDblClick:function (e) {
                        e.preventDefault();
                        if (this.disabled) {
                            return;
                        }
                        if (this.fireEvent("beforedblclick", this.node, e) !== false) {
                            // if (this.checkbox) {
                            //     this.toggleCheck();
                            // }
                            // if (!this.animating && this.node.isExpandable()) {
                            //     this.node.toggle();
                            // }
                            // DO YOUR STAFF HERE
                            this.fireEvent("dblclick", this.node, e);
                        }
                    }
                });
                return Ext.tree.TreeLoader.prototype.createNode.call(this, attr);
            }});