jsTree取消创建节点

时间:2018-06-22 07:59:49

标签: jstree

我使用的上下文菜单是jsTree,这是我的代码:

"contextmenu" : {
    "items": function ($node) {
        return {
            "create": {
                "separator_before": false,
                "separator_after": false,
                "label": "Créer",
                "action": function (data) {
                    var inst = $.jstree.reference(data.reference),
                        obj = inst.get_node(data.reference);
                    inst.create_node(obj, {}, "last", function (new_node) {
                        new_node.type = "child";
                        setTimeout(function () {
                            inst.edit(new_node);
                        }, 0);
                    });
                }
            },
            "Rename": {
                "separator_before": false,
                "separator_after": false,
                "label": "Renommer",
                "action": function (data) {
                    var inst = $.jstree.reference(data.reference),
                        obj = inst.get_node(data.reference);
                    inst.edit(obj);
                }
            },
            "Remove": {
                "separator_before": false,
                "separator_after": false,
                "label": "Supprimer",
                "action": function (data) {
                    var inst = $.jstree.reference(data.reference),
                        obj = inst.get_node(data.reference);
                    inst.delete_node(obj);
                }
            }
        };
    }
},

如果我要重命名节点并决定取消该节点,则只需按转义按钮,节点将返回其先前名称。

如果要创建一个节点,它将首先创建该节点并将其置于编辑模式。现在,如果按Escape键,则退出编辑模式,但该节点仍然存在。我想要完成的是如果我处于创建模式,然后按Escape键,它将删除新创建的节点。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

节点编辑功能本身接受回调作为第二个参数。回调函数在调用时会收到一个布尔值标志,指示用户是否取消了编辑。

inst.edit(new_node,"New node",function(node,bStatus,bCancelled){
    if(bCancelled){
        this.delete_node(node);
    }
});

还将返回当前节点和实例,可用于删除该节点。

参考:https://www.jstree.com/api/#/?q=edit