Dynatree + ленивая загрузка = медленная

Я начал использовать Dynatree в своем проекте, и у меня есть одна проблема - она ​​работает очень медленно, когда я пытаюсь читать лениво. Я обнаружил, что все мое дерево перерисовывается каждый раз, когда я вызываю addChild, и я думаю, что оно неэффективно.

Кто-нибудь знает, что я могу с этим сделать?

Два года назад mar10 написал, что "enableUpdate(true) вызывает tree.redraw(), поэтому все дерево обновляется. Это изменится с выпуском 1.0, но даже тогда будет быстрее объединять вызовы addChild". (Http://stackru.com/questions/3097791/dynatree-addchild-question-for-the-components-author)

Я сейчас использую релиз 1.0, но не могу найти никаких изменений.

2 ответа

Может быть, вы можете попробовать версию 1.2.2, последнюю доступную, с последними пакетами jquery & UI?

https://code.google.com/p/dynatree/

Вместо addChild вы можете инициализировать и обновить Dynatree с помощью вызовов ajax. Используйте Динатри initAjax и узел appendAjaxметоды.

В качестве аргумента data параметр, я передаю идентификатор родительского узла (или 0, если корневой узел).

initAjax: {
      type: 'POST',
      url: 'inc/treeNodes.php',
      dataType: 'json',
      data: {key: 0}
    }

а также

 onLazyRead: function (node) {
      node.appendAjax({
      type: 'POST',
      url: "inc/treeNodes.php",
      dataType: 'json',
      data: {key: node.data.key}
      })
  }

При использовании этого метода скорость больше не является проблемой, поскольку при выполнении вызовов Ajax для загрузки дочерних узлов не перезагружается все дерево.

Другие вопросы по тегам