Как обновить значения узлов 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).обновить(); работает, но в моем случае это вызывает утечку потока. каждое обновление добавляет еще один поток