我正在建造一种具有多种观点的离子型奶酪。我使用路由提供程序在不同的视图之间导航。
app.js
.config(function($routeProvider,$locationProvider){
$routeProvider
.when('/search',
{
controller : 'MyController',
templateUrl : 'partials/search.html'
})
.when('/not-found/:className',
{
controller : 'MyController',
templateUrl : 'partials/not-found.html'
})
我的index.html
<body ng-app="MyApp">
<ng-view></ng-view>
</body>
</html>
问题是手机上的后退按钮不起作用。它不记得历史记录。
例如,如果我从search.html转到not-found.html,当我按下手机上的后退按钮时,我希望它会回到search.html而不是关闭我的应用程序。
我看起来和离子论坛以及使按钮工作的建议方法是使用ion-nav-view
。如果我将ng-view
替换为ion-nav-view
,则搜索/未找到页面不会呈现,我甚至尝试在搜索/未找到的html页面上添加ion-view
。
1)你能建议一种方法让我的后退按钮工作吗?
答案 0 :(得分:2)
为了实现这一目标,您实际上需要捕获硬件后退按钮事件并相应地执行导航,或者您可以使用离子导航后退按钮 ..
捕获硬件后退按钮事件:
$ionicPlatform.registerBackButtonAction(function () {
if (condition) {
navigator.app.exitApp();
} else {
// handle back action!
}
}, 100);
可以找到更多详细信息here
使用离子导航按钮
<ion-nav-bar>
<ion-nav-back-button class="button-clear">
<i class="ion-arrow-left-c"></i> Back
</ion-nav-back-button>
</ion-nav-bar>
有关详细信息,请访问here
答案 1 :(得分:0)
registerBackButtonAction
已作为ion-nav-back-button
定义的ng-click
属性的一部分作为ion-nav-back-button
的一部分进行处理:buttonEle.setAttribute('ng-click', '$ionicGoBack()')
,因为$ionicGoBack
执行$ionicHistory.goBack()
,然后处理硬件后退按钮。使用状态配置的简单更改应该可以正常工作,如下所示:
angular
.module('app', ['ionic'])
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('search', {
url: '/search',
controller : 'MyController',
templateUrl : 'partials/search.html'
})
.state('not-found', {
url: `/not-found/:className',
controller : 'MyController',
templateUrl : 'partials/not-found.html'
});
$urlRouterProvider.otherwise('/search');
});
HTML:
<body ng-app="app">
<ion-nav-bar>
<ion-nav-back-button></ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
</body>
</html>