存储在启用autoSync同步后执行某些操作

Fir*_*DoL 4 extjs extjs4.1

我正在尝试检测并删除那些在同步后仍在商店但未添加到数据库但未添加到数据库的字段(成功:false).然后,向用户返回一条错误消息(带有一些错误代码).但是我只能在商店文档中看到"beforesync"事件.

有没有可能做这样的事情?我正在尝试"更新"事件,但只有在同步成功时才会在同步后调用它们(否则它们仅在同步之前被调用).

我无法找到同步后触发的事件.对此有何解决方案?

请注意,我正在使用autoSync,这就是为什么我无法挂钩回调,否则一切都会变得更容易.

我在文档中看到的另一个重点是:

码:

Ext.data.Model.EDIT
Ext.data.Model.REJECT
Ext.data.Model.COMMIT
Run Code Online (Sandbox Code Playgroud)

为什么REJECT事件永远不会被解雇?我认为如果成功=假REJECT将被调用,我是否需要类似404的东西才能获得该结果?

编辑:不,我找不到解雇更新事件的REJECT版本的方法.有什么建议吗?

Izh*_*aki 13

如果你问我,这就是ExtJS中的一些设计缺陷.

AbstractStore有onCreateRecords,onUpdateRecordsonDestroyRecords,它们是可以覆盖的空函数.如果成功为假,您可以调用rejectChanges().

Ext.define('BS.store.Users', {
    extend: 'Ext.data.Store',    
    model: 'BS.model.User',

    autoSync: true,
    autoLoad: true,

    proxy: {
        type: 'direct',
        api: {
            create: Users.Create,
            read: Users.Get,
            update: Users.Update,
            destroy: Users.Delete,

        },
        reader: {
            type: 'json',
            root: 'data',
        },
    },

    onCreateRecords: function(records, operation, success) {
        console.log(records);
    },

    onUpdateRecords: function(records, operation, success) {
        console.log(records);
    },

    onDestroyRecords: function(records, operation, success) {
        console.log(records);
    },

});
Run Code Online (Sandbox Code Playgroud)