0

Je suis en train de mettre en place everlive api pour mon {N} app NG2 et je donne les résultats suivants mis en placeTelerik Everlive API Nativescript Angular2 Configuration

const Everlive = require('./utils/everlive.all'); 

@Component({ 
    selector: "main", 
    template: "<page-router-outlet></page-router-outlet>" 
}) 
export class AppComponent implements AfterViewInit { 
    el: any; 

    constructor(private utils: Utils) { } 

    ngAfterViewInit() { 
     this.el = new Everlive({ 
      appId: Config.telerikAppId, 
      offlineStorage: true, 
      offline: { 
       syncUnmodified: true, 
       typeSettings: { 
        "ContentTypeName": { 
         "autoGenerateId": false 
        } 
       }, 
       storage: { 
        provider: Everlive.Constants.StorageProvider.FileSystem 
       } 
      }, 
      syncStart: this.startSync, 
      syncEnd: this.endSync 
     }); 

     // start 
     this.el.online(); 

     // track 
     connectivity.startMonitoring((newConnectionType: number) => { 
      switch (newConnectionType) { 
       case connectivity.connectionType.none: 
        console.log("Connection type changed to none."); 
        this.goOffline(); 
        break; 
       case connectivity.connectionType.wifi: 
        console.log("Connection type changed to WiFi."); 
        this.goOnline(); 
        break; 
       case connectivity.connectionType.mobile: 
        console.log("Connection type changed to mobile."); 
        this.goOnline(); 
        break; 
      } 
     }); 
    } 

    startSync() { 
     this.utils.showLoader(); 
    }; 

    endSync(syncInfo) { 
     this.utils.hideLoader(); 
     alert('Sync with server complete'); 
     console.log(syncInfo); 
    }; 

    goOffline() { 
     this.utils.confirmBox('No internet connection, switch to offline mode?', '', 'Yes', 'No') 
      .then((result) => { 
       if (result) { 
        this.el.offline(); 
       } else { 
        this.logout(); 
       } 
      }); 
    } 

    goOnline() { 
     this.utils.confirmBox('Internet connection detected, switch to online mode and sync data?', '', 'Yes', 'No') 
      .then((result) => { 
       if (result) { 
        this.utils.showLoader(); 
        this.el.online(); 
        this.el.sync(); 
       } else { 
        this.logout(); 
       } 
      }); 
    } 

    logout() { 

    } 
} 

Lorsque je lance l'application, naviguer entre un groupe d'états en espérant que les données sont en cache. Maintenant, j'éteins la connexion Wi-Fi sur mon ordinateur portable attendant à tirer les données du système de fichiers qu'il a mis en cache mais je vois une erreur de zone.js

Unhandled Promise rejection: Response {_body: Error: The Internet connection appears to be offline., status: 200, ok: true, statusText: "", headers: Headers…} ; Zone: <root> ; Task: Promise.then ; Value: Response {_body: Error: The Internet connection appears to be offline., status: 200, ok: true, statusText: "", headers: Headers…} undefined 

ce que je vois quand je me connecte la réponse lorsque le sync est complet

Object {syncedItems: undefined, syncedToServer: 0, syncedToClient: 0, failedItems: undefined, error: undefined} 

Répondre

0

il semble que le SDK everlive ne sait pas que vous ne disposez pas d'une connexion Internet et tente de faire une demande.

vérifier ce point essentiel avec un code d'initialisation exemple https://gist.github.com/anonymous/0d94dc664ed83004e9a349bd5f9eabd0

+0

vous utilisez les services de back-end Telerik ou avez-vous votre propre back-end java/php à partir de laquelle vous obtenez l'origine des données? – user7138736

+0

services backend telerik – d1mitar