前提・実現したいこと
お世話になります。vue2とOnsenUIを使ってモバイルアプリを作成しています。
v-ons-navigatorを使ってメインページから設定ページに遷移した後、設定ページからメインページに戻った後にメインページ側で設定を適用したいと思ったのですが、実現できる方法が見つからず悩んでいます。
具体的に、設定ページから戻る際にメインページの関数を呼び出すか、メインページのイベントを発火させるかしたいのですが、方法をご存知の方がいらっしゃいましたら教えていただけると助かります。
該当のソースコード
OnsenUIのドキュメントからコードをお借りしてきました。
以下のコードで、page2からpage1に遷移する際(postpopイベントが発火した際)にpage1の関数を呼び出したいと思っています。
index.html
html
1<template id="main"> 2 <v-ons-navigator swipeable 3 :page-stack="pageStack" 4 @push-page="pageStack.push($event)" 5 @postpop="testFunction" 6 ></v-ons-navigator> 7</template> 8 9<template id="page1"> 10 <v-ons-page> 11 <v-ons-toolbar> 12 <div class="center">Page 1</div> 13 </v-ons-toolbar> 14 <p style="text-align: center"> 15 This is the first page {{ showText }} 16 <v-ons-button @click="push">Push Page 2</v-ons-button> 17 </p> 18 </v-ons-page> 19</template> 20 21<template id="page2"> 22 <v-ons-page> 23 <v-ons-toolbar> 24 <div class="left"> 25 <v-ons-back-button>Page 1</v-ons-back-button> 26 </div> 27 <div class="center">Page 2</div> 28 </v-ons-toolbar> 29 <p style="text-align: center">This is the second page</p> 30 </v-ons-page> 31</template> 32 33<div id="app"></div>
main.js
js:
1var page2 = { 2 key: 'page2', 3 template: '#page2' 4} 5 6var page1 = { 7 key: 'page1', 8 template: '#page1', 9 methods: { 10 push () { 11 this.$emit('push-page', page2) 12 }, 13 changeValue () { 14 this.showText = 'AAA' 15 } 16 }, 17 data () { 18 return { 19 showText: 'Not changed' 20 } 21 } 22} 23 24new Vue({ 25 el: '#app', 26 template: '#main', 27 methods: { 28 testFunction () { 29 // ここでpage1のchangeValue関数を実行したい 30 } 31 }, 32 data () { 33 return { 34 pageStack: [page1] 35 } 36 } 37}) 38
試したこと
vueのデバッグツールを使うと、pageStackにはページがAnonymous Componentとして登録されているようです。
何とかしてpage1のコンポーネントをpostpopの際に取得しようといろいろ試しましたが、できませんでした。
postpopイベントで渡される引数にもpage1のコンポーネントが含まれていないようで、どうして良いか分からずお手上げ状態です。
お知恵をお貸しいただけると助かります。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
- onsenui: 2.9.1
- vue: 2.5.0
- vue-onsenui: 2.5.0

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。