前提・実現したいこと
MonacaでAngularJS+Onsenuiを利用して会員登録ページを作成しています。
ons-navigator内にons-tabbarを入れて入力項目ごとにページを遷移してたいと考えております。
1ページ入力ごとに入力確認をしたいので、入力後にOKボタンを押したらページ遷移でなく、関数を呼び出し、Localstrageにデータを入力して、入力に問題なければページを遷移したいと考えております。
当初tabbarを利用しないで作成していたのですが、作成ステップを明確化したいのと最終確認前に各Stepに戻れるようにしたいと思い、作り直しているところでわからなくなってしまいました。
html
1 <ons-navigator var="myNavigator"> 2 <ons-page ng-controller="pageCtrl as pctrl"> 3 <ons-toolbar id="toolbar"> 4 <div class="center">{{pctrl.title}}</div> 5 </ons-toolbar> 6 <ons-tabbar position="top"> 7 <ons-tab page="step1.html" label="Step1" icon="walking" active></ons-tab> 8 <ons-tab page="step2.html" label="Step2" icon="walking"></ons-tab> 9 <ons-tab page="step3.html" label="Step3" icon="walking"></ons-tab> 10 <ons-tab page="step4.html" label="Step4" icon="walking"></ons-tab> 11 </ons-tabbar> 12 </ons-page> 13 </ons-navigator> 14 <!-- Step1:ニックネーム入力画面 --> 15 <ons-template id="step1.html"> 16 <ons-page id="Step1Page" ons-show="pctrl.title = 'ニックネーム入力'"> 17 <div class="content" ng-app="myApp"> 18 <div class="main"> 19 <form> 20 <div class="box02" style="position: absolute; left: 5%; top: 10%;"> 21 <p style ="font-size:25pt;color: #1028fd;text-align:center;line-height:70px;">利用登録</p> 22 <p style ="font-size:15pt;text-align:center;">ニックネームを決めてください</p> 23 <div class="cp_iptxt" style="position: absolute; left: 5%; top: 30%;"> 24 <ons-input id="NickNameBox" modifier="underbar" placeholder="ニックネーム:10文字以内推奨" name="NickNameBox" style="font-size:14pt;"></ons-input> 25 <i class="fa fa-user fa-lg fa-fw" aria-hidden="true"></i> 26 </div> 27 28 <ons-button onclick="localStorageSetItem();" class="btn-all-radius" style="position: absolute; left: 10%; top: 70%" required><center>OK</center></ons-button> 29 <input type="button" value="戻る" onClick="location.href='index.html'" class="btn-all-radius" style="position: absolute; left: 55%; top: 70%"> 30 </div> 31 </form> 32 </div> 33 </div> 34 </ons-page> 35 </ons-template> 36 37 <!-- Step2:生年月日入力画面 --> 38 <ons-template id="step2.html"> 39 <ons-page id="Step2Page" ons-show="pctrl.title = '生年月日'"> 40 <div class="content" ng-app="myApp"> 41 <div class="main"> 42 </div> 43 </div> 44 </ons-page> 45 </ons-template> 46
javascript
1<script> 2 // モジュールの定義 3 var myApp = ons.bootstrap('myApp',[]); 4 /** 5 * 画面遷移用コントローラ 6 */ 7 myApp.controller('pageCtrl', function() { 8 // タブバーを取得 9 var tabbar = document.querySelector("ons-tabbar"); 10 // 1つ目のタブへ遷移 11 this.changeStep1Tab = function(){ 12 tabbar.setActiveTab(0); 13 }; 14 // 2つ目のタブへ遷移 15 this.changeStep2Tab = function(){ 16 tabbar.setActiveTab(1); 17 } 18 // 3つ目のタブへ遷移 19 this.changeStep3Tab = function(){ 20 tabbar.setActiveTab(2); 21 } 22 // 4つ目のタブへ遷移 23 this.changeStep4Tab = function(){ 24 tabbar.setActiveTab(3); 25 } 26 }); 27</script> 28<script> 29 var KEY = "NickName"; 30 // ローカルストレージをセットします。 31 function localStorageSetItem() { 32 if(document.getElementById("NickNameBox").value==""){ 33 alert("ニックネームが入力されていません") 34 }else{ 35 localStorage.setItem(KEY, JSON.stringify(document.getElementById("NickNameBox").value)); 36 location.href = 'step2.html'; 37 } 38 } 39</script>
わからないこと
関数localStorageSetItem()で入力確認後(ニックネーム)にページ内遷移を行いたいのですが、現在のコードでは別ファイルのEntryPage2.htmlに遷移するようになっています。
関数内からonsenuiの操作をAnglarjsで行うことはできるのでしょうか?
該当のソースコード
html
1<ons-button onclick="localStorageSetItem();">OK</ons-button>
javascript
1 function localStorageSetItem() { 2 //※ここでページ内遷移(step2.html)をするコードが書きたい 3 }
関数を使用ない場合の
html
1 <ons-tabbar position="top"> 2 <ons-tab page="step1.html" label="Step1" icon="walking" active></ons-tab> 3 <ons-tab page="step2.html" label="Step2" icon="walking"></ons-tab> 4 </ons-tabbar>
では遷移ができています。
関数内からonsenuiの操作をAnglarjsで行い、ページ遷移する方法を教えてください。
よろしくお願い致します。
追記(2019/11/24)
location.href = 'step2.html';の部分を
myNavigator.bringPageTop("step2.html");やmyNavigator.pushPage("step2.html");
に変更したら遷移はできましたが、tabbarが消えてしまいました。
tabbarを残したまま遷移する方法をお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。