2014-04-04 1 views
0

내 응용 프로그램의 오프라인 모드를 만들고 저장소에서 동기화 기능을 재정의해야합니다. 그러나이 작업을 수행 할 때 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)가 작동하지 않는 : 여기

는 오버라이드 (override)되는 기능입니다? 응용 프로그램이 온라인이되면 함수가 다음과 같이 호출됩니다
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 동기화가 하단에 있습니다.

+0

AppStore의 모든 코드를 보여줄 수 있습니까? 재정의 옵션을 추가 했습니까? 내가 appStore라고 말하면, 다른 모든 상점으로 교체하려는 주 스토어를 의미합니다. – Scoup

+0

@Scoup 오버라이드 옵션이 무엇인지 모르지만 저장소에 대한 링크가 있습니다. 동기화 기능은 아래쪽에 있습니다. http://pastebin.com/EqrqgA68 – Graham

+0

@Scoup 여기 구문 강조 표시가있는 pastebin이 있습니다. http : // pastebin.com/WMZTh5PR – Graham

답변

-1

일부 개체를 재정의해야하는 경우 가장 좋은 방법은 '재정의'옵션을 사용하는 것입니다.

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

이렇게하려면 "요구 사항"을 사용하십시오.

+0

'연장'과 어떻게 다른가요? – Graham

+0

여기에서'override'의 정의를 보시면 : http://docs.sencha.com/core/manual/content/classsystem.html 재정의가 필요하지 않은 것 같습니다. 이 경우에는 새로운 클래스 정의를 생성해야합니다. – Graham

+0

훈 ... 알아 들었어. 동기화시 console.log ("this")를 사용하여 누구인지 확인하십시오. – Scoup

관련 문제