2017-04-18 2 views
0

Ich verwende LocalForage, um lokale Daten in meiner App zu speichern. Also überprüfe ich, wenn der Bildschirm geladen ist if value = true wenn es die Seite umgeleitet werden soll, um meine TabsPage. HierIonic 2 - ionViewDidLoad-Funktion kann nicht lesen navCtrl

ist der Konstruktor:

constructor(public navCtrl: NavController, public loading: LoadingController){} 

Hier ist meine ionViewLoaded Funktion:

ionViewDidLoad() { 
    localForage.getItem('didLogin', function(err, value) { 
    // Run this code once the value has been 
    // loaded from the offline store. 
    console.log(value); 

    if(value){ 
     this.navCtrl.push(TabsPage); 
    } 
    }); 
} 

In einer anderen Funktion wird mit der gleichen Codezeile arbeiten.

Dies ist der Fehler, die ich erhalten:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'navCtrl' of undefined TypeError: Cannot read property 'navCtrl' of undefined

Antwort

1

Das Problem ist, dass die ‚this‘ in Ihrem Rückruf nicht eine Instanz der übergeordneten Komponente ist. Die Funktion ändert es. Sie können ES6 verwenden Pfeil Funktion, die dies von dem übergeordneten

localForage.getItem('didLogin', (err, value) => { 
if(value){ 
    this.navCtrl.push(TabsPage); 
} 
}); 

Das Problem ist nicht die ionViewDidLoad halten, wenn Sie den this.navCtrl außerhalb des localForage.getItem nennen wird es funktionieren.

Sie können mehr über die Pfeilfunktion (und das 'this' Problem) here lesen.

+0

ahhh natürlich! Vielen Dank – Sreinieren