質問: $timeout(function() { dialog.hide(); }, 2000); }); }); }); ``` しかし、ダイアログのバックボタンは以下のような形で制御可能だとドキュメントには書いてありますが、上記のような仕組みと組み合わせる方法がわかりません。幾つか考えられるコードを書いてみたのですが、思いついたコードではダイアログ表示時のバックボタンの制御ができませんでした。 ``` dialog.getDeviceBackButtonHandler().setListener(function (event) { navigator.app.exitApp(); }); ``` 以上、上記のような終了機能は可能でしょうか? 可能であればその方法をご教授願えれば幸いです。 よろしくお願いいたします。
回答: 動作確認しておりませんが、以下のようにしてみたらダメでしょうか。 ``` ons.ready(function () { // ダイアログの状態を表すフラグを作成 var showQuitDialog = false; ons.setDefaultDeviceBackButtonListener(function () { // ダイアログが既に表示されていればアプリを終了し // 表示されていなければ終了確認のダイアログを表示します。 if(showQuitDialog){ navigator.app.exitApp(); } else { // 終了確認ダイアログを作成 ons.createDialog('exit.html').then(function(dialog) { dialog.show(); showQuitDialog = true; // フラグを立てる // 2秒間操作がなければダイアログを閉じる var stop = $timeout(function() { dialog.hide(); showQuitDialog = false; // フラグを折る }, 2000); }); } }); }); ```