jsTree: progress_render с узлами ajax / render из массива

Это касается jsTree jQuery plugin . Я уже некоторое время борюсь с этим, только чтобы понять, что это это невозможно (изначально), поэтому я подумал о следующем решении моей проблемы ниже (которое не работает).

У меня есть дерево, использующее плагин json_data с ajax. Как только вы откроете конкретный узел результат сервера представляет собой массив из более чем 1000 json-узлы. Ответ довольно быстрый, но сам рендеринг требует некоторое время (пользовательский опыт показывает, что раздражающий "скрипт не ответ - сообщение «остановить скрипт / продолжить».

Решение, о котором я думал, заключалось в ограничении результатов, отправляемых обратно из сервер на меньшее число (скажем, 200) и использование некоторого "показать больше" label (или используя событие прокрутки jQuery), чтобы получить следующие 200. Однако использование jstree.create на каждом из этих узлов кажется очень медленно. Затем я заметил эту ветку в группе google jsTree в котором Иван предлагает создать все узлы сразу, используя функция parse_json - у меня это не работает.

Короткий фрагмент кода того, что я пытаюсь сделать: (при нажатии метки «показать больше»):

$.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 узлов. вместе).

Спасибо

8
задан Amir 4 March 2012 в 08:56
поделиться