我有商店(以及显示其内容的网格),用户可以删除和添加商品,但遗憾的是,删除后无法再添加一个商品。我发现问题是以前存储的同一个id。
我使用Dojo 1.6。
在firebug控制台中我得到了:
Error: assertion failed in ItemFileWriteStore
这是关于jsFiddle的演示:http://jsfiddle.net/MBBnE/
和代码:
dojo.require("dojo.data.ItemFileWriteStore");
dojo.addOnLoad(function() {
var d = {
items: [
{
id: 23,
x: 2},
],
identifier: "id",
};
var _store = new dojo.data.ItemFileWriteStore({
data: d,
});
var it = null;
_store.fetch({
query: {
id: "23*"
},
onItem: function(i) {
it = i;
}
})
_store.deleteItem(it);
console.info(it);
_store.newItem({id: 23, x: 3});
});
答案 0 :(得分:6)
希望我没有误解您的问题,但是如果您想要重新添加具有相同ID的其他项目,则从商店中删除项目时,您应该保存商店然后重新添加该项目。保存商店将清除所有脏项并允许重用id。
答案 1 :(得分:1)
当您在Itemfilewritestore中插入相同的值时,它会给出错误'ItemFileWriteStore中的断言失败' 要克服此问题,请在ItemFileWriteStore中插入新值或唯一值
_store.newItem({id: 24, x: 3});
我希望这会对你有所帮助。
答案 2 :(得分:0)
最后我做了一些解决方法 - 创建新商店并将所有商品复制到其中:
oldStore.fetch({
onItem: function(it){
var newItem = {
id: it.id[0],
valueX: it.valueX[0],
(...)
};
newStore.newItem(newItem);
}
});