只显示一次AlertController - Ionic 2 AngularJS 2

时间:2017-02-24 22:02:35

标签: angularjs angular ionic-framework dialog ionic2

我在我的项目中添加了一个非常基本的AlertController,以便让用户快速了解该应用,但由于其目的纯粹是为了欢迎,我想要展示一次(第一次打开应用程序,以便将来没有时间。

我将其包含在ionViewWillEnter()方法中:

ionViewWillEnter() {
    let alert = this.alertCtrl.create({
      title: 'Title',
      subTitle: 'Subtitle',
      message: 'Message',
      buttons: ['OK'],
      enableBackdropDismiss: false
    });
    alert.present();
  }

作为跨平台开发的先行者,我第一次面临这个问题,或者更确切地说是Android中的内容称为SharedPreferences。我查看过AlertController的官方文档,但我对handler buttons内部mPrefs = PreferenceManager.getDefaultSharedPreferences(this); Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false); if (!welcomeScreenShown) { AlertDialog.Builder(this) .setTitle("Title") .setMessage("Message") .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).show(); SharedPreferences.Editor editor = mPrefs.edit(); editor.putBoolean(welcomeScreenShownPref, true); editor.commit(); // Very important to save the preference } 找不到什么。

这是我在Android上为保存首选项所做的事情:

intTest decimal(5,0) UNSIGNED ZEROFILL

3 个答案:

答案 0 :(得分:1)

就像提到的其他SO用户一样,您可以使用Ionic Storage来实现这一目标。首先将其添加到providers声明中的NgModule列表中(例如,在src/app.module.ts中):

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

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

然后,您需要在显示警报的页面中将其注入并使用它:

import { Component, Injector } from '@angular/core';
import { Storage } from '@ionic/storage';

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

    constructor(..., private storage: Storage) {
        // ...
    }

    ionViewWillEnter() {
      this.storage.get('alreadyShown').then((alreadyShown) => {
         if(!alreadyShown) {
           this.storage.set('alreadyShown', true);
           this.showWelcomeAlert();
         }
      });
    }

    private showWelcomeAlert(): void {
      let alert = this.alertCtrl.create({
        title: 'Title',
        subTitle: 'Subtitle',
        message: 'Message',
        buttons: ['OK'],
        enableBackdropDismiss: false
      });
      alert.present();
    }
}

答案 1 :(得分:0)

您可以将某个地方保存在已经显示AlertController的持久存储中。

例如,您可以使用Secure Storage存储显示AlertController时设置的变量。

答案 2 :(得分:0)

您可以使用离子存储here

然后确保设置一个值,表明警报已显示在警报的处理程序中。