当同步功能被重写时,存储不会同步Sencha Touch 2.3

我为我的应用创建了一个离线模式,我需要覆盖我的商店中的同步功能。 但是,当我这样做时,即使我调用this.callParent(arguments) ,商店也不再同步。

这是重写的函数:

sync: function(){
    if(appOnline){
        console.log('App is online');
        this.callParent(arguments);
    }   
    else{
        console.log('App is offline');
        var found = false;

        for(var i = 0; i < storeSyncList.length; i++){
            if(storeSyncList[i] === this){
                found = true;
                break;
            }
        }

        if(!found)
            storeSyncList.push(this);
    }   
}

为什么this.callParent(arguments)不起作用? 当应用程序上线时,函数被调用如下所示:

storeSyncList[i].sync.call(storeSyncList[i],{
    scope: this,
    callback: function(records, operation, success){
        console.log('test1');
        console.log('successful sync: '(success ? 'Yes' : 'No'));
    }
});

正如你在调用中看到的那样,我将this部分作为sync.call()一部分传递给商店。 storeSyncList[i]是应用程序重新联机时正在同步的当前商店。

有谁知道为什么this.callParent(arguments)不会在做this商店时进行同步吗? 我知道这不是。 当我查看数据库时,它不会被更新, callback函数也不会被调用。 但是,我确信它正在运行sync.call行。 这里发生了什么?

更新:逐行调试后,将跳过对this.callParent(arguments)的调用。 我不能进入函数,它永远不会运行,程序只是将它传递过来,就好像它不在那里一样,直到函数结束。 很奇怪。 有人知道为什么

编辑:全班http://pastebin.com/WMZTh5PR同步的Pastebin在底部。


如果您需要重写某个对象,最好的方法是使用选项“覆盖”。

Ext.define('Airit.store.App', {
    override: 'Ext.data.Store',
    sync: function() {
       this.callParent(arguments)
       //etc
    }
});

只需使用“要求”即可。

链接地址: http://www.djcxy.com/p/80027.html

上一篇: Store not syncing when sync function is overridden Sencha Touch 2.3

下一篇: How to read additional response data after syncing store