Javascript Dojo-尝试删除项并将其添加到存储时出错(ItemFileWriteStore中的断言失败)
我有存储(和显示其内容的网格),用户可以删除和添加项目,但不幸的是,删除后的一个项目无法再次添加。我发现问题出在同一个id,这是以前在商店 我使用Dojo 1.6。 在firebug控制台中,我得到:Javascript Dojo-尝试删除项并将其添加到存储时出错(ItemFileWriteStore中的断言失败),javascript,dojo,dojo-1.6,Javascript,Dojo,Dojo 1.6,我有存储(和显示其内容的网格),用户可以删除和添加项目,但不幸的是,删除后的一个项目无法再次添加。我发现问题出在同一个id,这是以前在商店 我使用Dojo 1.6。 在firebug控制台中,我得到: Error: assertion failed in ItemFileWriteStore 下面是关于JSFIDLE的演示: 下面是代码: dojo.require("dojo.data.ItemFileWriteStore"); dojo.addOnLoad(function() {
Error: assertion failed in ItemFileWriteStore
下面是关于JSFIDLE的演示:
下面是代码:
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});
});
在Itemfilewritestore中插入相同的值时,将出现错误“在Itemfilewritestore中断言失败” 要解决此问题,请在ItemFileWriteStore中插入新的或唯一的值
_store.newItem({id: 24, x: 3});
我希望这将对您有所帮助。最后,我做了一个小的变通方法-创建新商店并将所有项目复制到其中:
oldStore.fetch({
onItem: function(it){
var newItem = {
id: it.id[0],
valueX: it.valueX[0],
(...)
};
newStore.newItem(newItem);
}
});
希望我没有误解你的问题,但是当你从商店中删除一个项目时,如果你想重新添加另一个具有相同id的项目,你应该保存商店,然后重新添加该项目。保存存储将清除所有脏项并允许重复使用id。Dojo存储在删除后不会释放标识符。至少在1.6中:(我得到了1.6!你有解决这个问题的方法吗?遗憾的是,我没有。当我发现这个“功能”时,我使用了一个单独的自动生成的标识符字段。我知道为什么我得到了
asserion失败的error:)不幸的是,我必须使用与前一项相同的id…谢谢,我断断续续地使用SO已经有一段时间了,还没有时间做出贡献。终于有时间回馈了。