0

我有一种情况,我需要从商店中删除商品,我正在使用 remove(record) 方法,我的目标是仅在服务器删除商品并返回成功消息后才从商店中删除商品。商店使用 ajax 代理对服务器进行 DELETE 调用,并同时使用自动加载和自动同步。当调用 remove(record) 时,它首先从存储中删除记录,然后继续对服务器进行 DELETE 调用。

我觉得这种行为有点奇怪,因为似乎我必须根据服务器的响应手动将模型重新插入到存储中。使情况更加复杂的是,“异常”事件是由代理而不是商店处理的。此外,代理与存储无关,因此在代理中捕获服务器响应生成的异常事件,不允许我在存储上执行诸如rejectChanges 之类的操作。

显然我的实现逻辑有问题,所以我需要了解的是如何在服务器响应后根据服务器的响应更改存储,或者如果不可能将存储返回到操作前的先前状态。

4

1 回答 1

2

我为此使用代理的“异常”事件。例如:

store.getProxy().on({
    exception: function() {
        store.rejectChanges();
    }
})

它也可以添加到您的商店:

initComponent: function() {
    this.callParent(arguments);
    this.getProxy().on({
        exception: function(proxy, response, operation) {
            this.rejectChanges();
        }
    });
}
于 2013-02-18T11:06:26.433 回答