我创建了一个基于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的领导,我必须在这里遗漏一些非常微不足道的东西。请帮忙。
答案 0 :(得分:0)
摘自该页面
如何从商店刷新树?
不支持此操作。商店需要向树通知数据的任何更改。目前,这实际上只有dojo.data.ItemFileWriteStore支持(开箱即用),因为设置客户端 - 服务器dojo.data源,服务器在数据发生变化时通知客户端非常复杂,超出了范围dojo,这是一个仅限客户端的解决方案。
更新树的唯一方法是重新绘制它:(
答案 1 :(得分:0)
对于那些来这里寻找解决方案问题的人来说,'我怀疑有一个错误'是我在论坛中得到的唯一答案,所以可能这是一个错误 - goo.gl/M7xg7