Dojo treemodel - добавление большого количества предметов - PullRequest
2 голосов
/ 14 марта 2010

Я пытаюсь добавить большое количество элементов (более 100) в мое дерево через ForestStoreModel, вызывая newItem в цикле. Это кажется довольно медленным и блокирует браузер. Есть ли способ сделать что-то похожее на grid beginUpdate & endUpdate? Я хочу «выключить» мое дерево, добавить 100 элементов в пакет, а затем «включить» мое дерево. Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 26 декабря 2013

Как предложил Стивен Чунг, лучшим способом было бы добавлять только узлы, которые требуются пользователю на определенном уровне узла; но иногда у вас может быть большое количество узлов на одном уровне, иначе могут помешать другие вещи. Чтобы обновить дерево большим количеством элементов одновременно, я бы предложил создать новый магазин / обновить ваш старый магазин, затем вам нужно обновить рендеринг дерева. Поэтому, как только в хранилище будет правильно отформатированный массив, сделайте это (благодарность Layke за взлом Как динамически обновлять данные дерева додзё ):

            // Completely delete every node from the dijit.Tree     
            myTree._itemNodesMap = {};
            myTree.rootNode.state = "UNCHECKED";
            myTree.model.root.children = null;

            // Destroy the widget
            myTree.rootNode.destroyRecursive();

            // Recreate the model, (with the model again)
            myTree.model.constructor(myTree.model);

            // Rebuild the tree
            myTree.postMixInProperties();
            myTree._load();
...