Как обновить значения jstree node без перезагрузки
У меня есть 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
), но структура не меняется. Как я могу это сделать? Спасибо!
Ответы
Ответ 1
Вам нужно не refresh()
, а redraw()
, поэтому код
$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);
Вы можете найти функции в jstree API.
Согласно предложению zmirc, в версии v.1.1 используйте:
$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();
Ответ 2
для удаления node и перезагрузки дерева
$('#mytree').jstree(true).refresh();
для тех, кому нужно перерисовывать без перезапуска использования дерева
jQuery('#data').jstree(true).refresh(true);
Ответ 3
$ ( '# Mytree') jstree (истина).refresh(). работает, но в моем случае это вызывает утечку потока. каждое обновление добавляет еще одну ветку
Ответ 4
Вы можете обновить узел этим
$('#treeView').jstree(true).refresh_node("node_id_here")
Ответ 5
Я загружаю данные через URL, поэтому моя часть обновления выглядит так:
$('#groupTree').jstree(true).settings.core.data.url = get_group_url();