Это касается плагина jsTree jQuery .Некоторое время назад я боролся с этим, только чтобы понять, что это невозможно (изначально), поэтому я подумал о следующем решении моей проблемы ниже (которое не работает).
У меня естьдерево, которое использует плагин json_data с ajax.Как только вы откроете определенный узел, результатом с сервера будет массив из более чем 1000 узлов JSON.Ответ довольно быстрый, но сам рендеринг занимает некоторое время (пользовательский опыт заключается в том, что он получает раздражающее сообщение «скрипт не отвечает - остановить скрипт / продолжить»).
Решение, о котором я думал, было ограничение отправляемых результатоввернуться с сервера на меньшее число (скажем, 200) и использовать некоторую метку «показать больше» (или использовать событие прокрутки jQuery), чтобы получить следующие 200. Однако использование jstree.create на каждом из этих узлов выглядит оченьЗатем я заметил эту тему в группе jsTree google , в которой Иван предлагает создать все узлы одновременно с помощью функции parse_json - у меня это не работает.
Aфрагмент короткого кода того, что я пытаюсь сделать: (при нажатии на ярлык «показать больше»):
$.ajax({
// send data to server in order to get the relevant json back
}(),
success : function (r) {
var parent_node = data.inst._get_parent(data.rslt.obj);
var id = parent_node.attr("id");
$("#root_tree").jstree("_parse_json", r, parent_node );
$("#root_tree").jstree("clean_node", parent_node, false);
}
});
Приведенный выше пример не отображает json и добавляет дочерние элементы в родительский узел.
Я был бы очень признателен за любой другой подход или если бы кто-нибудь мог указать, что я делаю неправильно. Опять же, используя:
$.each(r, function(i, node) {
var id = parent_node.attr("id");
$("#root_tree").jstree("create", "#"+id, "last", node, false, true);
});
Работает, но очень очень медленно (медленнее, чем рендеринг всех 1000 узлов вместе).
Спасибо