当同步功能被重写时,存储不会同步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