質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Q&A

1回答

3266閲覧

onsenUIのons-navigatorコンポーネントを使って画面遷移がしたい

kozy

総合スコア20

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

0グッド

0クリップ

投稿2017/04/03 18:21

###前提・実現したいこと
初心者です。monacaを使ってハイブリッドアプリを製作しています。
onsenUIのons-navigatorコンポーネントを使って画面遷移をしたいのですが、
上手くいきません。
例えば、ons-list-itemからプライバシー設定のページに遷移させたいとすると、
以下のようにすれば良いかと思うのですが、タップ可能な状態になりません。
初歩的な質問かと思いますが、原因を教えていただければ幸いです。
よろしくお願いいたします。

<ons-list-item modifier="chevron" onclick="myNavigator.pushPage('privacy_configration.html');">プライバシー設定</ons-list-item>

###該当のソースコード

<!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:; 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('show', function(event) { var page = event.target; var titleElement = document.querySelector('#toolbar-title'); if (page.matches('#first-page')) { titleElement.innerHTML = '検索する'; } else if (page.matches('#second-page')) { titleElement.innerHTML = 'プロフィールを設定する'; } else if (page.matches('#third-page')) { titleElement.innerHTML = 'メッセージを確認する'; } else if (page.matches('#forth-page')) { titleElement.innerHTML = 'その他'; } }); </script> </head> <body> <ons-navigator var="myNavigator" page="tab1.html"> <ons-page> <ons-toolbar> <div class="center" id="toolbar-title"></div> </ons-toolbar> <ons-tabbar position="auto"> <ons-tab label="検索" icon="fa-search" page="tab1.html"> </ons-tab> <ons-tab label="プロフィール設定" icon="fa-user" page="tab2.html"> </ons-tab> <ons-tab label="メッセージ" icon="fa-envelope-o" page="tab3.html"> </ons-tab> <ons-tab label="その他" icon="fa-ellipsis-h" page="tab4.html" active> </ons-tab> </ons-tabbar> </ons-page> <ons-template id="tab1.html"> <ons-page id="first-page"> <p style="text-align: center;"> This is the first page. </p> </ons-page> </ons-template> <ons-template id="tab2.html"> <ons-page id="second-page"> <p style="text-align: center;"> This is the second page. </p> </ons-page> </ons-template> <ons-template id="tab3.html"> <ons-page id="third-page"> <p style="text-align: center;"> This is the third page. </p> </ons-page> </ons-template> <ons-template id="tab4.html"> <ons-page id="forth-page"> <p style="text-align: center;"> <ons-list> <ons-list-item modifier="chevron" onclick="myNavigator.pushPage('privacy_configration.html');">プライバシー設定</ons-list-item> <ons-list-item modifier="chevron">利用規約</ons-list-item> <ons-list-item modifier="chevron">プライバシーポリシー</ons-list-item> <ons-list-item modifier="chevron">お問い合わせ</ons-list-item> <ons-list-item modifier="chevron">ヘルプ</ons-list-item>
</ons-list> </p> </ons-page>
</ons-template> <ons-template id="privacy_configration.html"> <ons-page id="fifth-page"> <p style="text-align: center;"> <p>テキストテキストテキストテキスト</p> </p> </ons-page> </ons-template> </ons-navigator> </body> </html> ```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ons-list-itemに、tappable属性を付加してみてください。

HTML

1<ons-list-item tappable modifier="chevron" onclick="myNavigator.pushPage('privacy_configration.html');">プライバシー設定</ons-list-item>

投稿2017/04/04 00:19

akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozy

2017/04/07 12:18

ありがとうございます。 ただ、tappable属性をつけてみても、タップできるふうにはなるのですが、画面遷移はしないですね.....。
akabee

2017/04/07 12:42

tappable属性をつけてもだめなら、javascriptでエラーが出ているかもしれませんね。別質問でも質問されていると思いますがons-navigatorが初期化できていないと思いますので、初期化が上手くいけばなんとかなるかもしれません。
kozy

2017/04/07 12:47

おっしゃる通りエラーが出ており、ons-navigatorのvar属性でなく、id属性にしたら問題なく画面遷移しました。onsenUI V2ではvar属性が廃止されているみたいですね。無事解決しました。ありがとうございました!
akabee

2017/04/07 12:53 編集

ひとまずは動いて良かったです。 正確には、onsenUI V2でもAngularJSを使っていればvar属性は使えます。idで画面遷移したということは、それなりのコードをjavascriptで書かなければならないと思うのですが、なぜ動くのかは個人的には疑問です。→こんな感じのコードが必要なはず?https://ja.onsen.io/v2/docs/js/ons-navigator.html
kozy

2017/04/07 17:06

AngularJSはまだちょっと荷が重いので、ひとまずはonsenUIだけで開発しようと思ってます。確かにjavascriptコードなしで動くというのはちょっと不思議な感じですね…。onsenUIの中に上手く隠蔽されているようですが。今後ともよろしくお願いします。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問