繁体   English   中英

使用ion-nav-back按钮的离子导航问题

[英]Ionic navigation issue using the ion-nav-back-button

我有一个基于选项卡模板的Ionic应用程序。 我的应用程序的常规导航结构为:

-- users (/users)
    -- user (/users/[id])
-- todos (/todos)
    -- todo (/users/[id])
-- settings (/settings)

那里有一些嵌套视图(用户和待办事项)。 它们显示在同一导航视图中,如下所示:

<ion-tabs class="tabs-icon-only tabs-color-assertive">
  <ion-tab icon="ion-ios-pulse-strong" href="#/tab/users">
    <ion-nav-view name="users-tab"></ion-nav-view>
  </ion-tab>
  <ion-tab icon="ion-ios-pulse-strong" href="#/tab/todos">
    <ion-nav-view name="todos-tab"></ion-nav-view>
  </ion-tab>
  <ion-tab icon="ion-ios-pulse-strong" href="#/tab/settings">
    <ion-nav-view name="settings-tab"></ion-nav-view>
  </ion-tab>     
</ion-tabs>

从而定义了状态:

  .state('tabs', {
    url: '/tab',
    abstract: true,
    templateUrl: 'templates/tabs.html'
  })
  .state('users', {
    url: '/users',
    views: {
      'users-tab': {
        templateUrl: 'templates/tab-users.html',
        controller: 'UsersCtrl'
      }
    }
  })
  .state('tabs.user', {
    url: '/users/:userId',
    views: {
      'users-tab': {
        templateUrl: 'templates/user-detail.html',
        controller: 'UserCtrl'
      }
    }
  })
  .state('todos', {
    url: '/todos',
    views: {
      'todos-tab': {
        templateUrl: 'templates/tab-todos.html',
        controller: 'TodosCtrl'
      }
    }
  })
  .state('tabs.todo', {
    url: '/todos/:todoId',
    views: {
      'todos-tab': {
        templateUrl: 'templates/todo-detail.html',
        controller: 'TodoCtrl'
      }
    }
  })
  .state('tab.settings', {
    url: '/settings',
    views: {
      'settings-tab': {
        templateUrl: 'templates/tab-settings.html',
        controller: 'SettingsCtrl'
      }
    }
  })

在我的index.html文件中,我具有以下内容:

<ion-nav-bar class="bar-light">
  <ion-nav-back-button></ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>

我利用ion-nav-back按钮来处理用户和待办事项的详细信息。 这将完全自动运行,并且Ionic可以很好地处理此问题。 除了一种情况。 当我从另一个视图(例如users / 1)中引用待办事项的详细视图(例如/ todos / 3)时,后退按钮不会出现,也无法返回待办事项概述(/ todos )。 单击选项卡按钮无效,但转到/ todos / 3)。

我想这是预期的行为,但是有什么办法无论如何始终显示后退按钮,或者始终使选项卡按钮转到todos视图(/ todos)?

我找到了解决方案。 这不是理想的方法,但是可以。 而不是直接进入详细信息状态:

$state.go('tabs.todos', {
    id: 1
});

我首先进入主状态,并保证会进入详细状态:

$state.go('tabs.todos').then(function() {
    setTimeout(function() {
        $state.go('tabs.todos', {
            id: 1
        });
    }, 100);
});

超时不是严格必要的,但是我发现有时没有它就失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM