2016-04-18 8 views
3

Ich kann nicht lokalen Speicher ordnungsgemäß funktionieren. Wenn ich tun:ionische 2 lokaler Speicher funktioniert nicht wie erwartet

this.VEEU_ID = 'veeuID'; 
 
this.storage.set(this.VEEU_ID, 11); 
 
alert('Storage was set to: '+JSON.stringify(this.storage.get(this.VEEU_ID)));

ich:

Storage was set to: {"_id":1733,"_state":1,"_result":"11","_subscribers":[]}

Ich dachte, dass this.storage.get(this.VEEU_ID) den Wert 11 zurückgeben sollte

+0

haben Sie versucht 'this.storage.set ('veeuID', 11)); alert ('Storage wurde auf:' + JSON.stringify (this.storage.get ('veeuID')))) eingestellt; ' – Akis

+1

Ja. Es sieht so aus, als könntest du nicht einfach die .get aufrufen, die du brauchst, um ein Versprechen zu halten. –

+1

ja, es gibt ein sehr schönes Beispiel hier http://www.joshmorony.com/build-a-todo-app-from-scratch-with-ionic-2-video-tutorial/ – Akis

Antwort

9

Das Abrufen von Daten aus dem Speicher ist asynchron, was bedeutet, dass unsere Anwendung weiterhin ausgeführt wird, während die Daten geladen werden. Ein Versprechen, ermöglicht es uns, eine Aktion auszuführen, wenn die Daten vollständig geladen werden, ohne dass die gesamte Anwendung

So ein Beispiel dafür pausieren sollte:

//set a value in storage 
this.storage.set("age", 25); 

//get the value from storage 
this.storage.get("age").then((value) => { 
    alert('Storage value: '+ value); 
}) 

Weitere Informationen finden Sie auf dem gefunden werden

SqlStorage API page

Update für Ionic 2 RC

Seit der Veröffentlichung von Ionic 2 RC einige Änderungen nahm Platz:

Speicher wurde von ionic-eckigen entfernt und in einem separaten Modul, @ ionic/Storage platziert. Starter wurden aktualisiert, um dies hinzuzufügen, stellen Sie sicher, dass Sie es zu Ihrer package.json hinzufügen, wenn Sie das Speichersystem verwenden. Weitere Details finden Sie hier.

Das folgende Beispiel zeigt, wie 2 Lagerung ionische:

Zuerst bearbeiten wir die NgModule in src/app/app.module.ts entfernt. Der wichtigste Teil ist Storage als Anbieter hinzuzufügen:

import { Storage } from '@ionic/storage'; 

@NgModule({ 
    declarations: [ 
    ... 
    ], 
    imports: [ 
    IonicModule.forRoot(MyApp) 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    ... 
    ], 
    providers: [ Storage ] // Make sure you do that! 
}) 
export class AppModule {} 

Jetzt können wir Storage in unsere Komponente injizieren:

import { Component } from '@angular/core'; 

import { NavController } from 'ionic-angular'; 

import { Storage } from '@ionic/storage'; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    constructor(public navCtrl: NavController, public storage: Storage) { 

    } 

} 

nach Lagerung in das Bauteil eingespritzt wir die storage.set und storage.get Methoden verwenden:

this.storage.set('name', 'John').then(() => { 
    console.log('Name has been set'); 
}); 

this.storage.get('name').then((name) => { 
    console.log('Name: ' + name); 
}); 
+0

und Wie kann man externen Variablen Werte zuweisen? –

+0

in einer Beispielklasse annehmen: 'öffentlicher Schlüssel: any = null; öffentlicher Speicher: ...; Konstruktor (...) { this.storage.get ('Alter'). Dann (Wert => { this.key = Wert; console.log (this.key); // zeigt den Wert an des Schlüssels } console.log (this.key); // zeigt null } ' Warum? Ich studierte Versprechungen, aber ich kann nicht verstehen, warum es die öffentliche Variable in der ganzen Klasse nicht initialisiert? –