Как обновить значения узлов jstree без перезагрузки

у меня есть jstree, который я создал со следующим кодом:

$('#mytree').jstree({"core": { "data" : value
                             , "themes" : { "dots": false
                                          , "icons": false }
                             }
                    }
                   );

Я могу перестроить его с новыми данными с помощью этого кода:

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();

но это может быть дорого, если у вас много узлов. Я хотел бы достичь того, что я хотел бы обновить значение элементов (т. е. node.text часть) без перестройки всего дерева. Я получаю новые значения через websocket в одном сообщении (полная строка JSON, которая будет new_data), но структура не изменение. Как я могу это сделать? Спасибо!

3 ответов


то, что вам не нужно refresh() но redraw() таким образом код

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);

вы можете найти функции в API для jstree.

согласно предложению zmirc, в v3.1 Использование:

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();

для удаления узла и перезагрузки дерева

 $('#mytree').jstree(true).refresh();

для тех, кому нужно перерисовать без перезапуска дерева используйте

jQuery('#data').jstree(true).refresh(true);

$('#mytree').jstree (true).обновить(); работает, но в моем случае это вызывает утечку потока. каждое обновление добавляет еще один поток