いくつかの種類のアラートダイアログを作成するためのユーティリティメソッドを収めたオブジェクトです。
Onsen UIではダイアログを表示する方法がいくつかあります。このチュートリアルでは次のダイアログの使い方を解説します。
onsNotification
は単純なアラートダイアログを表示することができます。onsNotification
の持つalert()
, confirm()
, prompt()
メソッドの役割は、window.alert()
やwindow.confirm()
やwindow.prompt()
と対応しています。
import onsNotification from 'angular2-onsenui';
// アラートを表示する
onsNotification.alert('Hello World!');
確認ダイアログを表示するには、onsNotification.confirm()
を使います。
onsNotification.confirm({
message: 'This dialog can be canceled by tapping the background or using the back button on your device.',
cancelable: true,
callback: i => {
if (i == -1) {
// canselされた場合iは-1が代入される
onsNotification.alert({message: 'You canceled it!'});
}
}
});
プロンプトを表示するには、onsNotification.prompt()
を用います。
onsNotification.prompt({
message: 'What is the meaning of Life, the Universe and Everything?',
callback: answer => {
if (answer === '42') {
onsNotification.alert({message: 'That\'s the correct answer!'});
} else {
onsNotification.alert({message: 'Incorrect! Please try again!'});
}
}
});
onsNotificationはons.notificationのラッパーです。APIの詳細は、ons.notificationのリファレンスを参照してください。
<ons-alert-dialog>
とAlertDialogFactory単純なアラートダイアログではなく、振る舞いやコンテンツをカスタマイズしたい場合には、<ons-alert-dialog>
要素とAlertDialogFactoryを利用します。
onsNotificationの場合とは違って、Angular 2アプリケーション下で<ons-alert-dialog>
要素を使うには手順が必要です。まず、<ons-alert-dialog>
を使ってComponentを宣言します。
@Component({
template: `
<ons-alert-dialog cancelable #alert>
<div class="alert-dialog-title">Warning!</div>
<div class="alert-dialog-content">
Hello World!
</div>
<div class="alert-dialog-footer">
<button class="alert-dialog-button" (click)="alert.hide()">OK</button>
</div>
</ons-alert-dialog>
`
})
class MyAlertDialogComponent {
}
次にこのコンポーネントとして呼び出すにはAlertDialogFactoryを使います。AlertDialogFactoryオブジェクトは次のようにコンポーネントのコンストラクタの引数に指定することでAngular 2のDIを通じて取得することができます。
@Component({
'selector': 'app',
'template': '<div></div>'
})
export class AppComponent {
constructor(adf: AlertDialogFactory) {
}
}
AlertDialogFactoryは、<ons-alert-dialog>
を使っているコンポーネントを動的に生成することができます。初期化時にダイアログを生成したい場合には、次のようにコンポーネントのngAfterViewInit()
内でcreateAlertDialog()
メソッドを使ってください。
また、一度作成したアラートダイアログはdestroy
関数で必ず消して下さい。ドキュメントのDOMツリーの中に保持されし続けるので、DOMリークを引き起こします。
export class AppComponent implements AfterViewInit, OnDestroy {
private _alert: any;
private _destroyAlert: Function;
constructor(private _adf: AlertDialogFactory) {
}
ngAfterViewInit() {
this._adf
.createAlertDialog(MyAlertDialogComponent, {message: 'This is just an example.'})
.then(({alertDialog, destroy}) => {
this._alert = alertDialog;
this._alert.show();
this._destroyAlert = destroy;
});
}
ngOnDestroy() {
this._destroyAlert();
}
}
ビューの初期化が行われていないconstructor()
内でcreateAlertDialog()
を呼び出すとエラーを引き起こすことに注意してください。
createAlertDialog()
の第二引数には、任意のデータを渡すことができます。
this._adf
.createAlertDialog(MyAlertDialogComponent, {message: 'This is just an example.'})
.then(({alertDialog, destroy}) => {
// ...
});
ここで渡したデータは、AlertDialogのコンポーネントのコンストラクタから取得することができます。
class MyAlertDialogComponent {
message = '';
constructor(params: Params) {
this.message = <string>params.at('message');
}
}
AlertDialogFactoryで読み込むコンポーネントは動的に読み込まれるものであるため、NgModule
のdeclarations
とentryComponents
に追加することを忘れないでください。
@NgModule({
imports: [OnsenModule],
declarations: [AppComponent, MyAlertDialogComponent],
bootstrap: [AppComponent],
entryComponents: [MyAlertDialogComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
class AppModule { }
<ons-dialog>
とDialogFactoryアラートダイアログではなく、<ons-page>
や<ons-navigator>
などを埋め込めるダイアログを表示する場合には、<ons-dialog>
を使います。
<ons-dialog>
をAngular 2で生成するには、DialogFactoryを使います。先ほど紹介したAlertDialogFactoryとほとんど同じ方法で使うことができます。
@Component({
template: `
<ons-dialog #dialog>
<div class="dialog-mask"></div>
<div class="dialog">
<div class="dialog-container" style="height: 200px;">
<ons-page>
<ons-toolbar>
<div class="center">Name</div>
</ons-toolbar>
<div class="content">
<div style="text-align: center">
<p>{{message}}</p>
<br>
<ons-button (click)="dialog.hide()">Close</ons-button>
</div>
</div>
</ons-page>
</div>
</div>
</ons-dialog>
`
})
class MyDialogComponent {
message = '';
constructor(params: Params) {
this.message = <string>params.at('message');
}
}
DialogFactoryを通じてこのMyDialogComponentを初期化します。
export class AppComponent implements AfterViewInit, OnDestroy {
private _dialog: any;
private _destroyDialog: Function;
constructor(private _df: DialogFactory) {
}
ngAfterViewInit() {
this._df
.createDialog(MyDialogComponent, {message: 'This is just an example.'})
.then(({dialog, destroy}) => {
this._dialog = dialog;
this._destroyDialog = destroy;
});
}
ngOnDestroy() {
this._destroyDialog();
}
}
AlertDialogの場合と同様に、初期化時に渡されるdestroy関数を終了時に呼び出すことを忘れないでください。
シグネチャ | 概要 |
---|---|
alert(message [, options] | options) |
ユーザーへメッセージを見せるためのアラートダイアログを表示します。 表示するメッセージは、テキストかもしくはHTMLを指定できます。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。 |
confirm(message [, options] | options) |
ユーザに確認を促すダイアログを表示します。 デオルとのボタンラベルは、”Cancel”と”OK”ですが、これはこのメソッドの引数でカスタマイズできます。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。 |
prompt(message [, options] | options) |
ユーザーに入力を促すダイアログを表示します。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。 |
toast(message [, options] | options) |
Display a simple notification toast with an optional button that can be used for simple actions. It can be called in the following ways:
(翻訳中)
|
ユーザーへメッセージを見せるためのアラートダイアログを表示します。 表示するメッセージは、テキストかもしくはHTMLを指定できます。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。
返り値:
名前 | 型 | 概要 |
---|---|---|
message | String |
Notification message. This argument is optional but if it’s not defined either options.message or options.messageHTML must be defined instead.
(翻訳中)
|
options | Object | オプションを指定するオブジェクトです。 |
options.message | String | アラートダイアログに表示する文字列を指定します。 |
options.messageHTML | String | アラートダイアログに表示するHTMLを指定します。 |
options.buttonLabels | String | Array | 確認ボタンのラベルを指定します。”OK”がデフォルトです。 |
options.primaryButtonIndex | Number | プライマリボタンのインデックスを指定します。デフォルトは 0 です。 |
options.cancelable | Boolean | ダイアログがキャンセル可能かどうかを指定します。 |
options.animation | String | アラートダイアログを表示する際のアニメーション名を指定します。”none”, “fade”のいずれかを指定できます。 |
options.id | String | ons-alert-dialog要素のID。 |
options.class | String | ons-alert-dialog要素のclass。 |
options.title | String | アラートダイアログの上部に表示するタイトルを指定します。”Alert”がデフォルトです。 |
options.modifier | String | アラートダイアログのmodifier属性の値を指定します。 |
options.maskColor | String | 背景のマスクの色を指定します。”rgba(0, 0, 0, 0.2)”がデフォルト値です。 |
options.callback | Function | アラートダイアログが閉じられた時に呼び出される関数オブジェクトを指定します。 |
ユーザに確認を促すダイアログを表示します。 デオルとのボタンラベルは、”Cancel”と”OK”ですが、これはこのメソッドの引数でカスタマイズできます。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。
返り値:
名前 | 型 | 概要 |
---|---|---|
message | String |
Notification message. This argument is optional but if it’s not defined either options.message or options.messageHTML must be defined instead.
(翻訳中)
|
options | Object | Parameter object. |
options.buttonLabels | Array | ボタンのラベルの配列を指定します。[“Cancel”, “OK”]がデフォルトです。 |
options.primaryButtonIndex | Number | プライマリボタンのインデックスを指定します。デフォルトは 1 です。 |
ユーザーに入力を促すダイアログを表示します。 このメソッドの引数には、options.messageもしくはoptions.messageHTMLのどちらかを必ず指定する必要があります。
返り値:
名前 | 型 | 概要 |
---|---|---|
message | String |
Notification message. This argument is optional but if it’s not defined either options.message or options.messageHTML must be defined instead.
(翻訳中)
|
options | Object | オプションを指定するオブジェクトです。 |
options.buttonLabels | String | Array | 確認ボタンのラベルを指定します。”OK”がデフォルトです。 |
options.primaryButtonIndex | Number | プライマリボタンのインデックスを指定します。デフォルトは 0 です。 |
options.placeholder | String | テキスト欄のプレースホルダに表示するテキストを指定します。 |
options.defaultValue | String | テキスト欄のデフォルトの値を指定します。 |
options.inputType | String |
Type of the input element (password , date …). Default is text .
(翻訳中)
|
options.autofocus | Boolean |
input要素に自動的にフォーカスするかどうかを指定します。デフォルトはtrueです。Cordova環境では、この機能を有効にするためには config.xml で KeyboardDisplayRequiresUserAction を false に設定する必要があります。
|
options.submitOnEnter | Boolean | Enterが押された際にそのformをsubmitするかどうかを指定します。デフォルトはtrueです。 |
Display a simple notification toast with an optional button that can be used for simple actions.
It can be called in the following ways:
(翻訳中)
ons.notification.toast(message, options);
ons.notification.toast(options);
返り値:
名前 | 型 | 概要 |
---|---|---|
message | String |
Toast message. This argument is optional but if it’s not defined then options.message must be defined instead.
(翻訳中)
|
options | Object | オプションを指定するオブジェクトです。 |
options.message | String | トーストに表示する文字列を指定します。 |
options.buttonLabel | String | 確認ボタンのラベルを指定します。 |
options.animation | String | トーストを表示する際のアニメーション名を指定します。”none”, “fade”, “ascend”, “lift”, “fall”のいずれかを指定できます。 |
options.timeout | Number | Number of miliseconds where the toast is visible before hiding automatically. (翻訳中) |
options.force | Boolean |
If true , the toast skips the notification queue and is shown immediately. Defaults to false .
(翻訳中)
|
options.id | String | ons-toast要素のID。 |
options.class | String | ons-toast要素のclass。 |
options.modifier | String | トーストのmodifier属性の値を指定します。 |
options.callback | Function | トーストが閉じられた時に呼び出される関数オブジェクトを指定します。 |
Onsen UIに関する質問は、Stack Overflowにてonsen-uiタグを付与してください。Onsen UIチームはあなたの問題解決をお手伝いします。
バグ報告や機能要望については、GitHub Issuesに記載をお願いいたします。
あわせて、下記の情報も参考にしてください。