jsTree: получать новое дерево JSON каждый раз, когда я удаляю узел

Я использую jsTree для создания двух таблиц содержимого (A и B), я перемещаю узлы из A в B и хочу получить json дерева B, чтобы сохранять его в базе данных каждый раз, когда я удаляю узел в дереве B, но когда я получаю json для события drop, он получает только json без нового узла.

Мне нужно получить дерево с включенным новым узлом. Я получаю JSON в событии "dnd_stop.vakata" с этим кодом:

$(document).on('dnd_stop.vakata', function (e, data) {
    var json = $("#JSTreeTOC").jstree(true).get_json();
    console.log(JSON.stringify(json));
    // Here I want to make an AJAX call to save the tree in database
});

Это мой код для создания jstree:

//jsTree "A":
$('#JSTreeServicios').jstree({
        'core': {
            "check_callback": false,
            'data': tree
        },
        "dnd": {
            "always_copy": true,
        },
        "plugins": ["dnd", "search", "types", "contextmenu", "sort"]
    });


//jsTree "B":
$('#JSTreeTOC').jstree({
        'core': {
            "check_callback": true,
            'data': tree
        },
        "plugins": ["dnd", "search", "types", "sort", "contextmenu"]
    });

1 ответ

Решение

Через некоторое время я понял, что jsTree не обновлялся в тот момент, когда запускается событие "dnd_stop.vakata", это происходит через несколько миллисекунд, и для решения проблемы на локальном хосте я добавил следующие строки:

$(document).on('dnd_stop.vakata', function (e, data) {
    setTimeout(function(){
        var json = $("#JSTreeTOC").jstree(true).get_json();
        console.log(JSON.stringify(json));
        // Here I make an AJAX call to save the tree in database
    }, 100);
});
Другие вопросы по тегам