[英]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.