2016-04-18 7 views
3

正常に動作するためにローカルストレージを取得できません。私がやる時:ionic 2ローカルストレージが正常に動作しない

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

は私が取得:

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

私はthis.storage.get(this.VEEU_ID)が値を返さなければならないと思った11

+0

あなたは 'this.storage.set( 'veeuID'、11))を試しましたか? alert( 'ストレージは次のように設定されています:' + JSON.stringify(this.storage.get( 'veeuID'))); ' – Akis

+1

はい。それは、あなたが約束を使用しなければならないことを単に呼び出すことはできないようです。 –

+1

はい、非常に良い例があります。http://www.joshmorony.com/build-a-todo-app-from-scratch-with-ionic-2-video-tutorial/ – Akis

答えて

9

ストレージからデータを取得することは非同期です。つまり、データが読み込まれている間もアプリケーションが実行され続けます。

//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); 
}) 

詳細情報で見つけることができる:約束はだからの例があるべきアプリケーション全体

を一時停止することなく、そのデータの読み込みが完了しているたびに、いくつかのアクションを実行するために私達を許可しますSqlStorage API page

イオン2 RCの更新

いくつかの変更がかかったイオン2 RCのリリース以来場所:

保存はイオン角から取り除かれ、別のモジュール、イオン/ストレージに入れられます。スターターはこれを追加するように更新されました。ストレージシステムを使用している場合は、package.jsonに追加してください。詳細はこちらをご覧ください。

次の例では、2ストレージをイオンにする方法を示します。

まず、我々はsrc/app/app.module.tsに位置NgModuleを編集します。重要な部分は、プロバイダとしてStorageを追加することです:

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

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

今、私たちは私たちのコンポーネントにStorageを注入することができます

:私たちは storage.setstorage.getメソッドを使用することができるコンポーネントにストレージを注入した後

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) { 

    } 

} 

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

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

とどのように外部変数に値を割り当てることができますか? –

+0

は、サンプルクラスでは次のように仮定します。 '公開鍵:any = null; public storage:...; コンストラクタ{ this.storage.get( 'age')。then(値=> { this.key = value; console.log(this.key); //値を表示します?} console.log(this.key); //表示されます } なぜですか?私は約束を勉強しましたが、クラス全体のパブリック変数を初期化しない理由を理解できません。 –

関連する問題