現在、Monacaでアプリ開発をしております。
ons-Carouselを使用して、8枚の画面(設問)を予め作成しておき、ons-Carousel以外の画面からボタンを押すと、該当する画面が表示されるような仕組みを作成しようとしています。
で、テストをしてみたのですが、始めの一回目は意図した画面に移動するのですが、2回目以降必ず1枚目の画面(設問1)になってしまいます。
ちなみに、変更後の「carousel.getActiveIndex()」の値も取ってみたのですが、ActiveIndexの値自体は指定した値に変わっていました。
画面だけ反映されていないように見えるのですが、問題点お分かりの方ご指摘頂きますと幸いです。
よろしくお願いいたします
2019/07/23 追記
下記ソースコードの verificationClick()ボタン押す画面を呼び出す時、pushPageで呼び出すのではなく、resetToPageで呼び出すと、正常に動作します。
pushPageだと、'page.html'は後ろに残ったままですが、resetToPageにすると呼び出したページ以外は全て破棄されるため、一回目に呼び出したのと同じ扱いになるため、ActiveIndexが効くのではないかと思います。
html
1 2function verificationClick(button) { 3 switch(button.title) 4 { 5 case '設問1': 6 localStorage.setItem('question', 0) 7 break; 8 case '設問2': 9 localStorage.setItem('question', 1) 10 break; 11 case '設問3': 12 localStorage.setItem('question', 2) 13 break; 14 case '設問4': 15 localStorage.setItem('question', 3) 16 break; 17 case '設問5': 18 localStorage.setItem('question', 4) 19 break; 20 case '設問6': 21 localStorage.setItem('question', 5) 22 break; 23 case '設問7': 24 localStorage.setItem('question', 6) 25 break; 26 case '設問8': 27 localStorage.setItem('question', 7) 28 break; 29 } 30 document.querySelector('#navi').pushPage('page.html'); 31} 32 33 34document.addEventListener('show', function (event) { 35 let page = event.target; 36 if (page.id == "page") { 37 page_show(); 38 } 39}); 40 41//画面初期化 42function page_show() { 43 var carousel = document.getElementById('carousel'); 44 var options = { 45 // none or lift 46 animation: "none", 47 animationOptions: {duration: 0.5, timing: 'ease-in'} 48 } 49 let question = localStorage.getItem('question'); //設問 50 try { 51 console.log("変更前:" + question); 52 carousel.setActiveIndex(Number(question), options) 53 console.log("変更後:" + carousel.getActiveIndex()); 54 } 55 catch(e){ 56 console.log(e); 57 } 58}; 59
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。