Dojo - Dijit.Tree - 更新树

时间:2012-01-31 14:57:40

标签: javascript dojo javascript-framework

我创建了一个基于TreeStoreModel的简单树,它由ItemFileWriteStore支持。 我尝试通过删除和添加商品来更新我的树,如下所示,但不能。

dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.Tree");
dojo.addOnLoad(function () {
    var tmpData = [{
            "name" : "Dell",
            "type" : "business",
            "businessid" : "1",
            "projectid" : "1",
            "submenu" : [{
                    "name" : "OTP",
                    "type" : "product",
                    "productid" : "100"
                }
            ]
        }
    ];

    var tmpData1 = [{
            "name" : "Lenovo",
            "type" : "business",
            "businessid" : "1",
            "projectid" : "1",
            "submenu" : [{
                    "name" : "OTP",
                    "type" : "product",
                    "productid" : "100"
                }
            ]
        }
    ];
    var store = new dojo.data.ItemFileWriteStore({
            data : {
                label : 'name',
                items : tmpData
            }
        });

    var treeModel = new dijit.tree.TreeStoreModel({
            store : store,
            query : {
                type : 'business'
            },
            childrenAttrs : ["submenu"]

        });

    var divTestTree = dojo.create("div", null, dojo.body(), "first");
    var mytree = new dijit.Tree({
            model : treeModel
        },
            divTestTree);
    /* Tree is created at this point */

    /* Delete the item from the store,  for some reason tempData is being reset*/
    store.deleteItem(tmpData[0]); 
    /* save */
    store.save();
    /* Tree shows up no more at this point */

    /* Try adding new item to the store */
    store.newItem(tmpData1[0]);
    /* save */
    store.save();
    /*nothing happens! */   
});

我跟随here的领导,我必须在这里遗漏一些非常微不足道的东西。请帮忙。

2 个答案:

答案 0 :(得分:0)

摘自该页面

如何从商店刷新树?

不支持此操作。商店需要向树通知数据的任何更改。目前,这实际上只有dojo.data.ItemFileWriteStore支持(开箱即用),因为设置客户端 - 服务器dojo.data源,服务器在数据发生变化时通知客户端非常复杂,超出了范围dojo,这是一个仅限客户端的解决方案。

更新树的唯一方法是重新绘制它:(

答案 1 :(得分:0)

对于那些来这里寻找解决方案问题的人来说,'我怀疑有一个错误'是我在论坛中得到的唯一答案,所以可能这是一个错误 - goo.gl/M7xg7