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

时间:2012-11-19 13:40:51

标签: javascript dojo dojo-1.6

我有商店(以及显示其内容的网格),用户可以删除和添加商品,但遗憾的是,删除后无法再添加一个商品。我发现问题是以前存储的同一个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});
});

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