Monaca x Onsen UIでアプリを作っています。
特定の条件に該当した際に、自動でページ遷移をしたいと考えていますが、
連続したページ遷移がなぜか出来ないようなので困っています。
【ページ構成】
page1、page2、page3の3ページ校正
【期待する挙動】
1 アプリを起動させると、page1.htmlが読み込まれます。
2 イベントリスナーでpage1読み込み時に aaa がNGなので page2 へ自動で遷移(pushPage)します
3 イベントリスナーでpage2読み込み時に bbb もNGなので page3 へ自動で遷移(pushPage)します
→結果として「page3」が表示されてほしい。(ただしpopPageでpage2へ、さらにpopPageでpage1へ戻れる状態)
【現状の挙動】
1 アプリを起動させると、page1.htmlが読み込まれます。
2 イベントリスナーでpage1読み込み時に aaa がNGなので page2 へ自動で遷移(pushPage)します
ここで遷移が止まってしまう。
【試したこと】
page1からpage3に直接遷移しても良いのですが、そうするとpage2が存在しないので、
page3から戻ろうとすると、page1に戻ってしまいます。これは期待した動きではないです。
※myNavigator.insertPage(●,'page2.html'); でpage2をなんとか差し込みできないだろうかとしたのですが、
●の数値を変えてみてもうまくいきませんでした。使い方が悪いのでしょうか・・・。
ページを差し込む等で対応できそうであれば、それでもOKですのでご教授ください。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> <script src="components/loader.js"></script> <script src="lib/onsenui/js/onsenui.min.js"></script> <link rel="stylesheet" href="components/loader.css"> <link rel="stylesheet" href="lib/onsenui/css/onsenui.css"> <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css"> <link rel="stylesheet" href="css/style.css"> <script> ons.ready(function() { console.log("Onsen UI is ready!"); }); //各ページ読み込み(初期化時)に発火 document.addEventListener('init', function(event) { var page = event.target; var aaa = "NG"; //関数Aで"OK"か"NG"かが戻ってくる。NGが戻ってきたと仮定。 var bbb = "NG"; //関数Bで"OK"か"NG"かが戻ってくる。NGが戻ってきたと仮定。 if (page.id == '1st-page') { if(aaa == "NG") { alert("aaaがNGなので遷移させます"); myNavigator.pushPage('page2.html'); //2nd-pageの意味です } } else if (page.id == '2nd-page') { alert("page2に来ました"); if(bbb == "NG") { alert("bbbもNGなのでさらに遷移させます"); myNavigator.pushPage('page3.html'); //3rd-pageの意味です } } else if (page.id == '3rd-page') { alert("ここにたどり着くのが正解です"); } }); </script> </head> <body> <ons-navigator id="myNavigator" page="page1.html"> <template id="page1.html"> <ons-page id="1st-page"> <ons-toolbar> <div class="center">page1</div> <div class="right" onclick="myNavigator.pushPage('page2.html');" style="padding-left:10px; padding-right:10px;">page2へ</ons-icon></div> </ons-toolbar> <div class="content" style="text-align: center">page1</div> </ons-page> </template> <template id="page2.html"> <ons-page id="2nd-page"> <ons-toolbar> <div class="left" onclick="myNavigator.popPage()" style="padding-left:10px; padding-right:10px;">戻る</ons-icon></div> <div class="center">page2</div> <div class="right" onclick="myNavigator.pushPage('page3.html');" style="padding-left:10px; padding-right:10px;">page3へ</ons-icon></div> </ons-toolbar> <div class="content" style="text-align: center">page2</div> </ons-page> </template> <template id="page3.html"> <ons-page id="3rd-page"> <ons-toolbar> <div class="left" onclick="myNavigator.popPage()" style="padding-left:10px; padding-right:10px;">戻る</ons-icon></div> <div class="center">page3</div> </ons-toolbar> <div class="content" style="text-align: center">page3</div> </ons-page> </template> </body> </html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。