8716


以下のとおりSampleベースで書いたのですが、tabbarとslidemenuが競合しているのかどっちかしか動きません。両方成立させるためにはどうするべきでしょうか？ちなみにしたのコードだとtabbarしか動きません。

[code]

    <!DOCTYPE HTML>
     <html lang="ja">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <link rel="stylesheet" href="components/loader.css">
        <link rel="stylesheet" href="css/style.css">
        <script src="components/loader.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
        <script>ons.bootstrap();</script>
      </head>
        <body>
            <ons-tabbar>
                    <ons-tab page="home.html" label="Home" icon="ion-home" active="true"></ons-tab>
                    <ons-tab page="comments.html" label="Comments" icon="ion-chatbox-working"></ons-tab>
                    <ons-tab page="tags.html" label="Tags" icon="ion-ios-pricetag"></ons-tab>
                    <ons-tab page="settings.html" label="Settings" icon="ion-ios-cog"></ons-tab>
        </ons-tabbar>
    
        <ons-sliding-menu
                  main-page="index.html"
                  menu-page="menu.html"
                  side="left"
                  max-slide-distance="250px"
                  var="menu">
        </ons-sliding-menu>
    
        <ons-template id="home.html">
          <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">Home</div>
                </ons-toolbar>
                    <p style="padding-top: 100px; color: #999; text-align: center">Page Contents</p>
          </ons-page>
        </ons-template>
    
        <ons-template id="comments.html">
          <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">Comments</div>
                </ons-toolbar>
                    <p style="padding-top: 100px; color: #999; text-align: center">Page Contents</p>
                    </ons-page>
        </ons-template>
    
        <ons-template id="tags.html">
          <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">Tags</div>
                </ons-toolbar>
                    <p style="padding-top: 100px; color: #999; text-align: center">Page Contents</p>
                    </ons-page>
        </ons-template>
    
        <ons-template id="feed.html">
          <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">Feed</div>
                </ons-toolbar>
                    <p style="padding-top: 100px; color: #999; text-align: center">Page Contents</p>
                    </ons-page>
        </ons-template>
    
        <ons-template id="settings.html">
          <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">Settings</div>
                </ons-toolbar>
                    <p style="padding-top: 100px; color: #999; text-align: center">Page Contents</p>
                    </ons-page>
        </ons-template>
    
       <ons-template id="page1.html">
            <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button ng-click="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </ons-toolbar-button>
                    </div>
                    <div class="center">page1</div>
                </ons-toolbar>
                <p style="text-align: center; color: #999; padding-top: 100px;">page1 Contents</p>
            </ons-page>
        </ons-template>
    
        <ons-template id="page2.html">
            <ons-page>
                <ons-toolbar>
                    <div class="left">
                        <ons-toolbar-button onclick="menu.toggleMenu()">
                            <ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon>
                        </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>
    
        <ons-template id="menu.html">
            <ons-list><ons-list-item modifier="chevron" onclick="menu.setMainPage('page1.html', {closeMenu: true})">page1.html</ons-list-item>
                <ons-list-item modifier="chevron" onclick="menu.setMainPage('page2.html', {closeMenu: true})">page2.html</ons-list-item>
            </ons-list>
        </ons-template>
    
    </body>
    </html>
    
[/code]


CC BY-SA 3.0
2015-04-03T02:49:31.963
8708
2015-04-03T06:59:08.223
question
onsen-ui
Onsen-uiでtabbarとslidemenuを共存させる方法


こんな感じでいかがでしょう。  
ざっくり大事そうな所を書くと

1.`ons-sliding-menu`の`main-page`をタブバーを配置したhtmlに変更  
2.`menu.html`のリストクリック時の処理をアクティブタブの変更 + スライドメニューを閉じるに変更

となっています。

[code]

    ons.bootstrap();
[/code]

[code]

    <link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/css/onsenui.css" rel="stylesheet"/>
    <link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/css/onsen-css-components.css" rel="stylesheet"/>
    <script src="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/js/angular/angular.min.js"></script>
    <script src="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/js/onsenui.min.js"></script>
    
    <ons-sliding-menu var="menu" menu-page="menu.html" main-page="tabbar.html" side="left" type="push" max-slide-distance="200px">
    </ons-sliding-menu>
    
    <ons-template id="tabbar.html">
        <ons-tabbar var="tabbar">
         <ons-tab page="home.html" label="Home" icon="ion-home" active="true"></ons-tab>
        <ons-tab page="comments.html" label="Comments" icon="ion-chatbox-working"></ons-tab>
        <ons-tab page="tags.html" label="Tags" icon="ion-ios-pricetag"></ons-tab>
        <ons-tab page="settings.html" label="Settings" icon="ion-ios-cog">   
        </ons-tab>
      </ons-tabbar>
    </ons-template>
    
    <ons-template id="home.html">
      <ons-toolbar>
        <div class="left">
         <ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="bars"></ons-icon></ons-toolbar-button>
        </div>
        <div class="center">Home</div>
      </ons-toolbar>
    
      <p style="padding-top: 100px; color: #999; text-align: center">Home Page Contents</p>
    </ons-template>
    
    <ons-template id="comments.html">
      <ons-toolbar>
        <div class="left">
         <ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="bars"></ons-icon></ons-toolbar-button>
        </div>
        <div class="center">Comments</div>
      </ons-toolbar>
      
      <p style="padding-top: 100px; color: #999; text-align: center">Comments Page Contents</p>
    </ons-template>
    
    <ons-template id="tags.html">
      <ons-toolbar>
        <div class="left">
         <ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="bars"></ons-icon></ons-toolbar-button>
        </div>
        <div class="center">Tags</div>
      </ons-toolbar>
      
      <p style="padding-top: 100px; color: #999; text-align: center">Tags Page Contents</p>
    </ons-template>
    
    <ons-template id="settings.html">
      <ons-toolbar>
        <div class="left">
         <ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="bars"></ons-icon></ons-toolbar-button>
        </div>
        <div class="center">Settings</div>
      </ons-toolbar>
      
      <p style="padding-top: 100px; color: #999; text-align: center">Settings Page Contents</p>
    </ons-template>
    
    <ons-template id="menu.html">
      <ons-list>
        <ons-list-item modifier="chevron" onclick="tabbar.setActiveTab(0), menu.closeMenu()">
          Home
        </ons-list-item>
        <ons-list-item modifier="chevron" onclick="tabbar.setActiveTab(1), menu.closeMenu()">
          Comments
        </ons-list-item>
        <ons-list-item modifier="chevron" onclick="tabbar.setActiveTab(2), menu.closeMenu()">
          Tags
        </ons-list-item>
        <ons-list-item modifier="chevron" onclick="tabbar.setActiveTab(3), menu.closeMenu()">
          Settings
        </ons-list-item>
      </ons-list>
    </ons-template>
[/code]


CC BY-SA 3.0
2015-04-03T06:59:08.223
8716
2015-04-03T06:59:08.223
3516
8708
answer