2017-03-24 11 views
1

イオン2を学習し、特にStorageを使用します。このthe docsStorage getイオン値で決して値を返しません2

ionic start storagetest blank --v2 

だから、私はちょうど空白のアプリ作成

import { NgModule, ErrorHandler } from '@angular/core'; 
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 
import { MyApp } from './app.component'; 
import { HomePage } from '../pages/home/home'; 

import { StatusBar } from '@ionic-native/status-bar'; 
import { SplashScreen } from '@ionic-native/splash-screen'; 

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

@NgModule({ 
    declarations: [ 
    MyApp, 
    HomePage 
    ], 
    imports: [ 
    IonicModule.forRoot(MyApp), 
    IonicStorageModule.forRoot() 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    HomePage 
    ], 
    providers: [ 
    StatusBar, 
    SplashScreen, 
    {provide: ErrorHandler, useClass: IonicErrorHandler} 
    ] 
}) 
export class AppModule {} 

をそして先に行ってきました。そして、

cordova plugin add cordova-sqlite-storage --save 
npm install --save @ionic/storage 

を、私app.module.tsは次のようになります〜home.ts

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, storage: Storage) { 

    storage.ready().then(() => { 
     storage.set('name', 'Max'); 
     storage.get('name').then((val) => { 
     console.log('Your name is', val); 
     }) 
    }); 

    } 

} 

javascriptログには何もありません。 get()は値を返すことはないようです。しかし、私はconsole.log()を入れているので、ready()はうまくいきます。

何が間違っていますか?

私はChrome、Mac OSでこのアプリケーションを実行しています。

答えて

2

storage.setは非同期であり、約束を返します。get().then()が呼び出されると、値が設定されないことがあります。試してみてください:

storage.ready().then(() => { 
     storage.set('name', 'Max').then(()=> 
     storage.get('name').then((val) => { 
     console.log('Your name is', val); 
     }); 
    ); 
    }); 

あなたは何も記録されません理由は、おそらくですthenまたはcatch()方法にはエラーハンドラを持っていません。

関連する問題