离子 - 离子导航视图不起作用

时间:2014-12-24 06:32:27

标签: angularjs ionic-framework ionic

我正在建造一种具有多种观点的离子型奶酪。我使用路由提供程序在不同的视图之间导航。

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)你能建议一种方法让我的后退按钮工作吗?

2 个答案:

答案 0 :(得分:2)

为了实现这一目标,您实际上需要捕获硬件后退按钮事件并相应地执行导航,或者您可以使用离子导航后退按钮 ..

  1. 捕获硬件后退按钮事件:

    $ionicPlatform.registerBackButtonAction(function () {
      if (condition) {
        navigator.app.exitApp();
      } else {
        // handle back action!
      }
    }, 100);
    
  2. 可以找到更多详细信息here


    1. 使用离子导航按钮

      <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>  
      
    2. 有关详细信息,请访问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>