내 응용 프로그램의 오프라인 모드를 만들고 저장소에서 동기화 기능을 재정의해야합니다. 그러나이 작업을 수행 할 때 this.callParent(arguments)
으로 전화를 걸더라도 상점이 더 이상 동기화되지 않습니다.동기화 기능을 재정의 할 때 저장소가 동기화되지 않습니다. Sencha Touch 2.3
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'));
}
});
당신이 전화에서 볼 수 있듯이
, 나는sync.call()
의
this
부분으로 가게를 전달하고있다.
storeSyncList[i]
은 앱이 온라인 상태가되었을 때 동기화되는 현재 스토어입니다.
누구나 this.callParent(arguments)
이 this
이 스토어 일 때 동기화를 수행하지 않는 이유를 알고 있습니까? 나는 그렇지 않다는 것을 안다. 데이터베이스를 보면 업데이트되지 않으며 callback
함수는 호출되지 않습니다. 그러나, 나는 그것이 sync.call
행을 실행하고 있는지 확인합니다. 무슨 일 이니?
업데이트 : 라인별로 디버깅 한 후 this.callParent(arguments)
에 대한 호출을 건너 뜁니다. 나는 함수로 들어갈 수는 없으며 결코 실행되지 않습니다. 프로그램은 함수가없는 것처럼 함수를 넘기고 함수의 끝으로갑니다. 매우 이상합니다. 왜 그런지 알아?
편집 : 전체 클래스의 붙여 넣기 http://pastebin.com/WMZTh5PR 동기화가 하단에 있습니다.
AppStore의 모든 코드를 보여줄 수 있습니까? 재정의 옵션을 추가 했습니까? 내가 appStore라고 말하면, 다른 모든 상점으로 교체하려는 주 스토어를 의미합니다. – Scoup
@Scoup 오버라이드 옵션이 무엇인지 모르지만 저장소에 대한 링크가 있습니다. 동기화 기능은 아래쪽에 있습니다. http://pastebin.com/EqrqgA68 – Graham
@Scoup 여기 구문 강조 표시가있는 pastebin이 있습니다. http : // pastebin.com/WMZTh5PR – Graham