ionic / angular 1.3 - 当视图内部存在离子侧菜单时,缺少离子导航后退按钮

时间:2015-01-29 18:28:03

标签: angularjs ionic-framework ionic

我似乎无法弄清楚如何让一个后退按钮出现在包含离子侧菜单指令的视图中。

这是我提出的绝对最简单的例子:     http://codepen.io/jsplaine/pen/YPxvXL?editors=101

请注意,状态x.emptyView和状态x.emptySideMenu中的离子视图是状态x的离子导航视图的子视图。

这是一个更深入的示例,其中存在实际填充的侧边菜单:     http://codepen.io/jsplaine/pen/ZYJRYW?editors=101

这是第一个codepen的基本路由器:

angular.module('ionicApp', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise('/');

  $stateProvider
    .state('app', {
      url: "/",
      templateUrl: "templates/home.html",
      controller: 'AppCtrl'
    })

    .state('x', {
      url: "/x",
      abstract: true,
      template: '<ion-nav-view animation="slide-left-right"/>'
    })

    .state('x.emptyView', {
      url: "/empty-view",
      templateUrl: "templates/empty_view_only.html"
    })

    .state('x.emptySideMenu', {
      url: "/empty-side-menu",
      templateUrl: "templates/empty_side_menu.html"
    })
})

第二个问题是更深入的代码集。根据您首先单击的选项卡,第2个或第3个,相应的模板将被缓存,以便将来导航到第2个和第3个模板。先点击第二个,然后点击第三个。然后重新开始,先单击第3个,然后单击第2个。发生这种情况的事实使我想到我以某种方式使用ui-router错误。

我也不明白为什么我必须在index.html和抽象状态(&#39; x&#39;)模板中定义ion-nav-view。不是陈述&#39; x&#39; index.html的孩子(空状态)?

有人可以弄清楚如何修改两个codepens,以便后退按钮出现在包含ion-side-menus指令的视图中,对于第二个codepen ..第二和第三个选项卡缓存问题是否已解决?

2 个答案:

答案 0 :(得分:5)

解决方案可以在这里看到:

http://codepen.io/jsplaine/pen/wBqNmw?editors=101

似乎离子侧菜单的父离子视图需要一个子离子导航条,而且必须将带有后退视图的enable-menu设置为true。

<!-- Side Menu Nav and Burger Defined -->
<script id="templates/side_menu_with_nav.html" type="text/ng-template">
   <ion-view view-title="Side Menu with Nav and Burger">
       <ion-nav-bar></ion-nav-bar> <!-- HERE -->
       <ion-side-menus enable-menu-with-back-views="true">
           <ion-side-menu-content>
               <ion-nav-bar> 
                   <ion-nav-back-button class="button-icon ion-arrow-left-c"></ion-nav-back-button>
                   <ion-nav-buttons side="right">
                       <button class="button button-icon button-clear ion-navicon" menu-toggle="right"></button>                    
                   </ion-nav-buttons>
               </ion-nav-bar>
....

由于离子指令/ menuToggle docs状态:https://github.com/driftyco/ionic/blob/master/js/angular/directive/menuToggle.js#L1

  
      
  • ###隐藏在儿童视图上的按钮
  •   
  • 默认情况下,菜单切换按钮仅显示在根
  • 上   
  • 级别的侧面菜单页面。导航到子视图将隐藏菜单 -
  •   
  • 切换按钮。通过设置
  • ,可以在子页面上显示它们   
  • {@link&gt; ionic.directive:ionSideMenus}的enable-menu-with-back-views属性
  •   
  • 指令为true。
  •   

答案 1 :(得分:3)

我想知道作者是否没有考虑你的情况。他们的模型是一个滑入式菜单,只能部分滑动,可以用菜单图标切换。所以你可能有点偏离范式,但这似乎对我有用,尽管在模板中复制导航条代码有点蹩脚。

<script id="templates/empty_side_menu.html" type="text/ng-template">
  <ion-view view-title="Empty side menu">
    <ion-nav-bar align-title="center" class="nav-title-slide-ios7 bar-stable">
      <ion-nav-back-button class="button-icon ion-arrow-left-c">
      </ion-nav-back-button>
    </ion-nav-bar>

    <ion-side-menus>           
    </ion-side-menus>
  </ion-view>
</script>