4

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

我使用 Dojo 1.6。

在萤火虫控制台我得到:

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});
});
4

3 回答 3

6

希望我没有误解您的问题,但是当您从商店中删除商品时,如果您想重新添加另一个具有相同 ID 的商品,您应该保存商店然后重新添加商品。保存 store 将清除所有脏项目并允许重复使用 id。

于 2012-12-06T06:28:09.147 回答
1

当您在 Itemfilewritestore 中插入相同的值时,它会给您错误“ItemFileWriteStore 中的断言失败”要克服此问题,请在 ItemFileWriteStore 中插入新的或唯一的值

_store.newItem({id: 24, x: 3});

我希望这能帮到您。

于 2012-11-19T17:05:20.673 回答
0

最后我做了一些解决方法——创建新商店并将所有项目复制到其中:

    oldStore.fetch({
        onItem: function(it){

            var newItem = {
                id: it.id[0],
                valueX: it.valueX[0],
                (...)
            };

            newStore.newItem(newItem);
        }
    });
于 2012-12-05T08:30:11.940 回答