温泉UI滑动菜单

时间:2014-11-25 09:08:21

标签: javascript angularjs onsen-ui

我有这样的菜单:

   <ons-navigator animation="slide" var="myNavigator">
    <ons-sliding-menu menu-page="menu.html" main-page="link/to/some/page.html" side="left"
                         var="menu" type="reveal" max-slide-distance="260px" swipable="true">
       </ons-sliding-menu>

       <ons-template id="menu.html">
          <ons-page modifier="menu-page">
             <ons-toolbar modifier="transparent"></ons-toolbar>
             <ons-list class="menu-list">
                <ons-list-item class="menu-item" ng-click="menu.setMainPage('link/to/some/page.html', {closeMenu: true})">
                   Home
                </ons-list-item>
            <ons-list-item class="menu-item" ng-click="menu.setMainPage('link/to/some/other/page.html', {closeMenu: true})">
                   Home
                </ons-list-item>
     </ons-list>
          </ons-page>
       </ons-template>
   </ons-navigator>

导航到&#34; link / to / some / other / page.html&#34;后,我有$scope.myNavigator.pushPage('anotherpage', {});

操作。这也有效。 但在我执行 pushpage 操作后,我无法再使用该菜单了。我必须先做 popPage

页面如下所示:

<div ng-controller="someNiceController">
   <ons-page>
      <ons-toolbar>
         <div class="left">
            <ons-toolbar-button ng-click="menu.toggle()">
               <ons-icon icon="ion-navicon" size="28px" fixed-width="false"></ons-icon>
            </ons-toolbar-button>
         </div>
         <div class="center">{{title}}</div>
      </ons-toolbar>
        My nice content
   </ons-page>
</div>

我认为我的网页结构存在问题...... 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您应该将滑动菜单放在导航器之外。

当您按下时,导航器内的内容将被其他页面替换,因此当您使用pushPage()时,示例中的滑动菜单将消失。

以下代码显示了如何将滑动菜单与导航器一起使用:

<ons-sliding-menu
                  main-page="main.html"
                  menu-page="menu.html"       
                  side="left"
                  max-slide-distance="250px"
                  var="menu">
</ons-sliding-menu>

<ons-template id="main.html">
  <ons-navigator var="myNavigator">
    <ons-toolbar>
      <div class="center">Page 1</div>
    </ons-toolbar>
    <br>
    <div style="text-align: center">
      <ons-button onclick="myNavigator.pushPage('page2.html')">Push</ons-button>
    </div>
  </ons-navigator>
</ons-template>

<ons-template id="page2.html">
  <ons-page>
    <ons-toolbar>
      <div class="center">Page 2</div>
    </ons-toolbar>
    <br>
    <div style="text-align: center">
      <ons-button onclick="myNavigator.popPage()">Pop</ons-button>
    </div>
  </ons-page>
</ons-template>

<ons-template id="menu.html">
  <ons-list>
    <ons-list-item modifier="tappable">
      Some option
    </ons-list-item>
    <ons-list-item modifier="tappable">
      Another option      
    </ons-list-item>
  </ons-list>
</ons-template>

在这里你可以看到它的实际效果: http://codepen.io/argelius/pen/ogXGeV

答案 1 :(得分:0)

这是Onsen UI中一个有效的滑动菜单。您应该进行两项更改,即将sliding-menu元素放在导航器之外,并使用变量var="menu"引用它。使用变量可简化脚本。点击下面的简单示例。

ons.bootstrap();
<head>
  <link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/css/onsenui.css" rel="stylesheet" />
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
  <script src="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/js/onsenui.min.js"></script>
  <link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.2.2/build/css/onsen-css-components.css" rel="stylesheet" />
</head>

<body>
  <ons-sliding-menu main-page="main.html" menu-page="menu.html" side="left" max-slide-distance="250px" var="menu">
  </ons-sliding-menu>
  <ons-template id="main.html">
    <ons-navigator var="myNavigator">
      <ons-toolbar>
        <div class="center">Page 1</div>
      </ons-toolbar>
      <br>
      <div style="text-align: center">
        <ons-button onclick="myNavigator.pushPage('page2.html')">Next Page</ons-button>
        <ons-button onclick="menu.toggleMenu()">Toggle Menu</ons-button>
      </div>
    </ons-navigator>
  </ons-template>
  <ons-template id="page2.html">
    <ons-page>
      <ons-toolbar>
        <div class="center">Page 2</div>
      </ons-toolbar>
      <br>
      <div style="text-align: center">
        <ons-button onclick="myNavigator.popPage()">Back</ons-button>
      </div>
    </ons-page>
  </ons-template>
  <ons-template id="menu.html">
    <ons-list>
      <ons-list-item modifier="tappable">
        First option
      </ons-list-item>
      <ons-list-item modifier="tappable">
        Second option
      </ons-list-item>
    </ons-list>
  </ons-template>
</body>