jsTree: обновить содержимое sh после вызова AJAX, затем открыть все - PullRequest
0 голосов
/ 23 января 2020

Я загрузил jsTree с вызовом AJAX, который возвращает данные JSON. Еще один вызов AJAX выполняется, когда узел перемещается, и я хочу обновить дерево:

$("#my_tree").jstree({
   "core": {
      ...
})
.on("move_node.jstree", function(node,nodes){
   $.ajax({
      url: "/path/to/ajax",
      type: "POST",
      data: {
         action: "move",
         ...
      },
      success: function () {
         $('#my_div').jstree(true).refresh(false, true);
      }
   });
})

Это работает, но я бы хотел, чтобы дерево открылось при refre sh. Это не работает, дерево остается свернутым.

      success: function () {
        $('#my_tree').jstree(true).refresh(false, true);
        $('#my_tree').jstree("open_all");
        [or even $("#my_tree").trigger("loaded.jstree"); ]
      }

Однако «open_all» отлично работает, когда страница загружена:

.bind("loaded.jstree", function (event, data) {
   $(this).jstree("open_all");
});

Как я могу обновить sh и открыть дерево? Спасибо за вашу помощь.

[Edit] Точность после ответа Томалака:

После того, как перемещение выполнено, некоторые процессы происходят на стороне базы данных, и новый контент должен быть загружен через AJAX затем отображается. Вот почему дерево обновляется.

1 Ответ

0 голосов
/ 23 января 2020

Добавление этого открывает дерево заново после ссылки sh:

.bind("refresh.jstree", function (event, data) {
  $(this).jstree("open_all");
}
...