2017-02-24 46 views
0

我加了一個很基本的AlertController在我的項目,爲了給用戶一個簡要介紹了應用程序,但,因爲它的目的純粹是爲了歡迎,我想展示它曾經(第一次打開應用程序),以便未來的時間不會有。顯示AlertController只有一次 - 離子2個AngularJS 2

我把它在ionViewWillEnter()方法:

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

如跨平臺開發的啓動,這是第一次我面臨的Android這個問題或者說所謂SharedPreferences。我查看了AlertController的官方文檔,但我沒有發現handlerbuttons以內。

這是我做Android上保存偏好:

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 
    } 
+0

請澄清你的問題,據寫它不可能說你被問到。 –

回答

1

就像提到的其他SO用戶一樣,您可以使用Ionic Storage來做到這一點。首先,它添加到列表providersNgModule聲明(例如,在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

目前'src/app.module.ts'看起來像這樣:'providers:[提供:ErrorHandler,useClass:IonicErrorHandler}]'。當我添加存儲'提供者:[存儲,提供:ErrorHandler,useClass:IonicErrorHandler}]'我得到一個_Runtime錯誤:由於:沒有提供者Storage!_。它不適用於'provider:[Storage]',因爲對話框不顯示 – Rick

+1

我想你錯過了一個'{',應該是'providers:[存儲,{提供:ErrorHandler,useClass:IonicErrorHandler}]' – sebaferreras

+1

完善!我無法看到它的工作原理,因爲我已經在瀏覽器上部署了。我試過AVD,效果很棒!非常感謝你;) – Rick

0

您可以保存在某個地方在一個持續性的存儲您已經表明AlertController。

例如,你可以使用Secure Storage存儲,當你展示AlertController時設置的變量。

+0

你能告訴我如何? – Rick

0

你可以使用離子存儲here

並確保爲設置指示,在警報的處理程序顯示的警報值。