c3에서 하이브리드 앱을 만들어 보자. - 데이터 지속성 편
마지막까지
도입편
전이편
개요
앱 내에서 데이터를 보관하고 싶을 때가 있습니다. 어쩌면. 확실히.
앱에서 설정이라든지 할 때라든가.
그런 때
cordova-sqlite-storage
를 사용해 갑니다.공식 문서
이번에는 쉽게 버튼을 누르면 현재 시간을 저장하고 다른 페이지에서 표시해 봅시다.
플러그인 추가
명령으로 플러그인 설치
$ ionic cordova plugin add cordova-sqlite-storage
$ npm install --save @ionic-native/sqlite
루트 모듈 추가 설정
지난번 그래도 했는데 모듈을 추가했으면 루트 모듈에 설정이 필요했습니다.
src/app/app.module.ts
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { IonicStorageModule } from '@ionic/storage'; // ←追加
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { NextPageModule } from '../pages/next/next.module';
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
NextPageModule,
IonicStorageModule.forRoot() // ←追加
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
이상 추가 두 줄을 추가합니다.
이제 준비가 되었습니다.
데이터 저장
버튼 설치
데이터를 저장하는 트리거를 설정합시다.
HomePage
에 버튼을 추가하여 현재 시간을 저장합니다.src/pages/home/home.html
<ion-header>
<ion-navbar>
<ion-title>
Ionic Blank
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<button ion-button (click)="saveTime()">現在時刻を保存</button>
<button ion-button (click)="toNextPage()">next</button>
</ion-content>
페이지 천이의 버튼의 앞에 「현재 시각을 보존」하는 버튼을 설치했습니다.
클릭하면
saveTime()
라는 처리를 합시다.현재 시간 저장
saveTime()
의 내용을 씁니다.src/pages/home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { NextPage } from '../next/next';
import { Storage } from '@ionic/storage';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, private storage: Storage) {
}
// NextPageへ遷移
toNextPage(){
this.navCtrl.push(NextPage);
}
// 現在時刻を保存
saveTime(){
let now = new Date();
this.storage.set('time', now.getHours()+'-'+now.getMinutes()+'-'+now.getSeconds());
}
}
변경점은
1.
import
에서 모듈 로드2.
constructor
인수 추가3.
saveTime()
라는 현재 시간을 저장하는 처리 추가3에서는
time
라는 키로 현재 시간을 응용 프로그램 내부에 저장합니다.저장된 데이터 가져오기
데이터의 저장은 할 수 있었을 것이므로, 이번에는 저장한 데이터의 취득을 합니다.
보려면 NextPage로 합시다.
데이터를 취득하는 처리
src/pages/next/next.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Storage } from '@ionic/storage';
/**
* Generated class for the NextPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-next',
templateUrl: 'next.html',
})
export class NextPage {
outputTime:string;
constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage) {
// timeというキーで保存してあるデータを取り出します。
this.storage.get("time").then(savedTime => {
this.outputTime = savedTime;
});
}
ionViewDidLoad() {
console.log('ionViewDidLoad NextPage');
}
}
import
에서 Storage 모듈로드 constructor
에 인수 추가 time
라는 키의 데이터를 검색하고 outputTime
라는 변수를 html에서 사용할 수 있도록이상 3점이 변경이네요.
획득한 데이터 표시
NextPage에서 얻은 데이터를 표시합니다.
src/pages/next/next.ts
<!--
Generated template for the NextPage page.
See http://ionicframework.com/docs/components/#navigation for more info on
Ionic pages and navigation.
-->
<ion-header>
<ion-navbar>
<ion-title>nextPage</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<p>{{ outputTime }}</p>
</ion-content>
추가하는 것은
<p>{{ outputTime }}</p>
의 일행 뿐입니다.움직여 보자
$ ionic cordova run ios
일단 버튼을 눌러 페이지 천이했을 때만, nextPage로 시간이 갱신되고 있습니다.
.
.
.
이해하기 어렵다! ! ! ! ! !
같은 페이지에서 해라! ! ! !
맞습니다. 벌써 써버렸고, 좋을까.
그럼에도 불구하고 데이터의 지속성입니다.
물론 앱을 제거할 때까지 데이터를 계속 유지합니다.
이상
덤
데이터를 검색할 때
strage.get(...)
했지만 등록되지 않은 키를 검색하려고 하면 null
가 되어 오류가 발생하지 않았습니다.
Reference
이 문제에 관하여(c3에서 하이브리드 앱을 만들어 보자. - 데이터 지속성 편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryosomiya/items/d31ffaf84756aa06e996텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)