结合Onsen UI滑动菜单和导航

DTF*_*gus 6 onsen-ui

我目前正在使用温泉ui构建我的第一个cordova应用程序.看起来很有前途!但我遇到了一个我无法解决的问题,我找不到答案.

我希望这是一个初学者的问题,可以由具有更多温泉经验的人轻松解决.

我想要一个滑动菜单,仍然是主屏幕上的"通常"导航.

我试过两种不同的方法:

1)

<ons-navigator var="app.navi">
    <ons-page>
        <ons-sliding-menu menu-page="menu.html" main-page="page1.html" side="left"
    var="menu" type="reveal" max-slide-distance="260px" swipable="true">
        </ons-sliding-menu>
    </ons-page>
</ons-navigator>

<ons-template id="menu.html">
    <ons-page modifier="menu-page">

        <ons-list-item class="menu-item" ng-click="menu.setMainPage('page2.html', {closeMenu: true})">
          Continue last story
        </ons-list-item>

        ...

    </ons-page>
</ons-template>

<ons-template id="page1.html">
 <ons-page ng-controller="BooksCtrl">
      // Navigation in controller:
      app.navi.pushPage("new_action.html", {
            animation: "lift"
        });

  </ons-page>
</ons-template>
Run Code Online (Sandbox Code Playgroud)

结果:没有错误消息.但是一旦我从第一个主页导航到另一个页面,我无法打开滑动菜单.(与github repo中的官方演示相同,名为navigator_sliding-menu)

2)

        <ons-sliding-menu menu-page="menu.html" main-page="page1.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-list-item class="menu-item" ng-click="menu.setMainPage('page2.html', {closeMenu: true})">
          Continue last story
        </ons-list-item>

        ...

    </ons-page>
</ons-template>

<ons-template id="page1.html">
 <ons-navigator animation="slide" var="app.navi">
 <ons-page ng-controller="BooksCtrl">
      // Navigation in controller:
      app.navi.pushPage("new_action.html", {
            animation: "lift"
        });

  </ons-page>
  </ons-navigator>
</ons-template>
Run Code Online (Sandbox Code Playgroud)

与此处相同:http://codepen.io/argelius/pen/ogXGeV 因此导航元素将移动到第一个主页面.结果:我可以浏览应用程序(通过控制器中的pushPage),我可以从每个页面打开菜单.但是一旦我点击菜单中的链接,任何pushPage调用都会导致错误消息:

Uncaught TypeError: Cannot read property '$$phase' of null
Uncaught Error: Fail to fire "pageinit" event. Attach "ons-page" element to the document after initialization.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

先感谢您

Joh*_*lez 1

尝试将其放在<ons-sliding-menu>index.html 中。例如,如果您的索引将包含以下内容的全部内容:

<ons-sliding-menu
    menu-page="menu.html" main-page="page1.html" side="left"
    var="menu" type="reveal" max-slide-distance="260px" swipable="false" swipe-target-width="50">
  </ons-sliding-menu>
Run Code Online (Sandbox Code Playgroud)

然后在您要使用导航的 page1.html 上。用你的

<ons-page modifier="menu-page">

        <ons-list-item class="menu-item" ng-click="menu.setMainPage('page2.html', {closeMenu: true})">
          Continue last story
        </ons-list-item>
Run Code Online (Sandbox Code Playgroud)

最后,如果您想要跟踪页面的任何结尾。使用导航器到达结束页面。v-page2.html-v

<ons-navigator var="app.navi">
<ons-list-item class="menu-item" ng-click="app.navi.pushPage("new_action.html", {
        animation: "lift"
    })">
          Continue last story
        </ons-list-item>
<ons-navigator>
Run Code Online (Sandbox Code Playgroud)

回来。只需使用ng-click="app.navi.popPage()"But 就像 DTFagus 所说的那样。使用导航器更适合结束页面。