我试图通过在循环中调用newItem,通过ForestStoreModel向我的树添加大量项目(100+)。这似乎很慢并且锁定了浏览器。有什么方法可以做类似于grid的beginUpdate& endUpdate?我想基本上“关闭”我的树,批量添加100个项目,然后“打开”我的树。有任何想法吗?谢谢!
答案 0 :(得分:0)
正如Stephen Chung所说,最好的方法是只添加用户在特定节点级别所需的节点;但有时你可能会在同一级别拥有大量节点,或者其他东西可能会受到阻碍。为了一次更新包含大量项目的树,我建议创建一个新商店/更新旧商店,然后你需要刷新树呈现。因此,一旦商店拥有格式正确的数组,请执行此操作(感谢Layke的hack How to update dojo tree data dynamically):
// 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();