Javascript Dojo-尝试删除项并将其添加到存储时出错(ItemFileWriteStore中的断言失败)

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() {

我有存储(和显示其内容的网格),用户可以删除和添加项目,但不幸的是,删除后的一个项目无法再次添加。我发现问题出在同一个id,这是以前在商店

我使用Dojo 1.6。

在firebug控制台中,我得到:

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已经有一段时间了,还没有时间做出贡献。终于有时间回馈了。