jstree:如何取消删除/恢复节点

问题描述 投票:0回答:2

我在我的应用程序中使用 jsTree 和 contextmenu 插件。

删除节点时,我有一个 ajax 请求对我的数据库执行操作。

仅当ajax返回操作= true参数时,我才想实际从视图中删除节点。

如何恢复已删除的jstree节点,代码如下:

function (data) {
    var inst = $.jstree.reference(data.reference),
        obj = inst.get_node(data.reference);
    if(inst.is_selected(obj)) {
        inst.delete_node(inst.get_selected());
    }
    else {
        inst.delete_node(obj);
    }
}
jquery ajax tree nested jstree
2个回答
0
投票

我仅在调用成功时从树中删除节点。首先删除节点,然后进行调用,如果失败则尝试重新添加节点,这是没有意义的。这是一个仅在 ajax 调用成功时删除节点的示例:

var node = $('#tree').jstree('get_selected');

$.ajax({
    url: link,
    type: 'GET',
    data: { id: node.attr('id') },
    async: false,
    success: function (data, text) {
        $('#tree').jstree('delete_node', node);
    },
    error: function (request, status, error) {
    }
});

ps。这将获取当前选定的节点


0
投票

另外两个选择。您可以在回调中检查条件:

  "check_callback": function(operation, node, node_parent, node_position, more) {
    if(operation=='delete_node'){
        if(true){
            return false;
        }
    }
    return true;                
}           

或者如果您使用上下文菜单,您可以检查那里的情况:

 "contextmenu":{         
    "items": function(node) {
        return {
            "Remove": {
                "separator_before": false,
                "separator_after": false,
                "label": "Remove",
                "action": function (obj) { 
                    if(true){
                        tree.delete_node(node);
                    }
                }
            }
        };
    }
}       
© www.soinside.com 2019 - 2024. All rights reserved.