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

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

ただいまの
回答率

90.53%

  • Monaca

    975questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • AngularJS

    566questions

    AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

  • Onsen UI

    320questions

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

sliding-menuとnavigatorを使用すると画面制御が失われる

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,696

nomorin

score 4

実現したいこと

monacaで<ons-sliding-menu>と<ons-navigator>と<ons-tabbar>を組み合わせてアプリケーションを作成したいです。

発生している問題

sliding-menuのmenuボタンを押下すると指定したmenu.htmlが表示されますが、下に表示されているmain.htmlの部分がグレーアウトされずにボタン等の操作ができてしまいます.

ソース

まず、index.htmlでsliding-menuを呼び出し、その中でnavigatorを定義しています。

<ons-sliding-menu var="menu" menu-page="menu.html" 
        side="left" max-slide-distance="300px" type="overlay">
    <ons-navigator var="myNavigator" id="myNavigator"></ons-navigator> 
</ons-sliding-menu>
myNavigator.resetToPage("main.html");

補足情報

onsenUI 2.0
AngularJS 1.4

解決方法、または<ons-sliding-menu>と<ons-navigator>と<ons-tabbar>を組み合わせのベストプラクティスをご存知の方がいらっしゃいましたら教えていただけると幸いです。
何卒、よろしくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

こんな感じで作ってみました。

サンプル

<html>
 <head>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>  
   <script src="https://cdnjs.cloudflare.com/ajax/libs/onsen/2.0.0-alpha.15/js/onsenui.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/onsen/2.0.0-alpha.15/js/angular-onsenui.min.js"></script>   
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/onsen/2.0.0-alpha.15/css/onsenui.min.css" />
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/onsen/2.0.0-alpha.15/css/onsen-css-components.min.css" />
   <script>
     var app = ons.bootstrap();
     app.controller('navi',function($scope){
        ons.ready(function() {
          navi.resetToPage('page1.html', {animation:'none'});
        });
     });
     app.controller('menu',function($scope){
       $scope.onClickPage1 = function(){
         if(navi.pages.length >= 2) navi.popPage();
         menu.closeMenu();
       }
       $scope.onClickPage2 = function(){
         if(navi.pages.length <= 1) navi.pushPage('page2.html', {animation:'none'});
         menu.closeMenu();
       }
     });
   </script>
 </head>
 <body>
<ons-sliding-menu main-page="navi.html" menu-page="menu.html" side="left" max-slide-distance="250px" var="menu"></ons-sliding-menu>

<ons-template id="navi.html">
  <ons-navigator var="navi" ng-controller="navi"></ons-navigator>
</ons-template>

<ons-template id="menu.html">
  <ons-list ng-controller="menu">
    <ons-list-item modifier="chevron" ng-click="onClickPage1()">
      page1.html
    </ons-list-item>
    <ons-list-item modifier="chevron" ng-click="onClickPage2()">
      page2.html
    </ons-list-item>
  </ons-list>
</ons-template>

<ons-template id="page1.html">
  <ons-page>
    <ons-toolbar>
      <div class="left">
        <ons-toolbar-button ng-click="menu.toggleMenu()">
          menu
        </ons-toolbar-button>
      </div>
      <div class="center">Page 1</div>
    </ons-toolbar>
    <ons-tabbar>
      <ons-tab page="home.html" active="true">
        <span style="font-size: 14px">Home</span>
      </ons-tab>
      <ons-tab page="fav.html">
        <span style="font-size: 14px">Favorites</span>
      </ons-tab>
      <ons-tab page="settings.html">
        <span style="font-size: 14px">Settings</span>
      </ons-tab>
    </ons-tabbar>
  </ons-page>
</ons-template>

<ons-template id="home.html">home</ons-template>
<ons-template id="fav.html">fav</ons-template>
<ons-template id="settings.html">setting</ons-template>

<ons-template id="page2.html">
  <ons-page>
    <ons-toolbar>
      <div class="left">
        <ons-toolbar-button onclick="menu.toggleMenu()">
          menu
        </ons-toolbar-button>
      </div>
      <div class="center">Page 2</div>
    </ons-toolbar>
    <p style="text-align: center; color: #999; padding-top: 100px;">Page2 Contents</p>
  </ons-page>
</ons-template>

 </body>
</html>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/16 23:47

    resetToPage()は現時点ではバグっていて、消した画面のbind(イベント)が残り続けるので使わないほうが良いと思います。
    https://github.com/OnsenUI/OnsenUI/issues/1620

    キャンセル

  • 2016/10/18 02:03

    回答ありがとうございます。掲載して頂いたサンプルで期待通りの動作を確認することができました。resetToPage()を使用しない方向で合わせてソースの修正を行いたいと思います。本当にありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    onsenUIの「popover」について

    【質問内容】 「popover」を使用して、数種類あるポップアップ(新着通知、フォルダを作成、編集)から押されたポップアップに応じて処理を変更したいのですが、個別に判定するにはど

  • 解決済

    popPageで指定したoption.dataをpopされた画面で受け取りたい

    前提・実現したいこと OnsenUI2 + AngularJS + Monacaで開発を実施しています。 下記ドキュメントにありますように、popPageではoptions

  • 解決済

    ons-navigatorの中でons-tabbarを使いたいが・・・

    前提・実現したいこと ここに質問したいことを詳細に書いてください (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが

  • 解決済

    ons-tabでpushPageが使えない

    前提・実現したいこと Monacaでアプリ開発をしていたのですが、<ons-tabbar>のページ内に、pushPageを実装すると画面遷移ができませんでした。 ons-tab

  • 解決済

    ons-tabの非表示

    前提・実現したいこと MonacaでOnsenUI v2を使ったアプリを製作していて、ons-tabを用いてページの切り替えを行っているのですが、ons-tab内のページでpus

  • 解決済

    タイトルやメニューはそのままそれ以下の部分を変更したいです。

    前提・実現したいこと 現在、Onsen U1 V2 Angular1 Splitterを使って開発をしようとしているのですが、ページにボタンを作り、クリックすると画面の表示内容を

  • 解決済

    スワイプ操作での画面遷移

    前提・実現したいこと Monacaでアプリ開発の勉強をしているのですが、OnsenUIのpushpageで画面遷移をした後に、画面を上にスワイプすることでpop-pageができる

  • 解決済

    OnsenUiでページ移動が出来ません

    pushpageは問題なくできるのですが、popPageしたら以下のエラーが出ます Uncaught TypeError: Cannot read property 'nav

同じタグがついた質問を見る

  • Monaca

    975questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • AngularJS

    566questions

    AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

  • Onsen UI

    320questions

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