隐藏在离子,angularjs中的按钮

vik*_*234 18 angularjs ionic

我需要在不同的页面/视图中显示和隐藏后退按钮.我从Justin Noel那里得到了参考:

<body ng-app="starter" ng-controller="AppCtrl">
  <ion-nav-bar class="bar-stable">
    <ion-nav-back-button hide-back-button="{{hideBackButton}}">
    </ion-nav-back-button>
  </ion-nav-bar>
</body>
Run Code Online (Sandbox Code Playgroud)

App控制器切换按钮显示:

.controller('AppCtrl', function($scope, $location) {
   var path = $location.path();
   if (path.indexOf('submit') != -1)
     $scope.hideBackButton = true;
   else
     $scope.hideBackButton = false;
})
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为控制器只被调用一次,而不是在不同状态下的视图变化.同时从其他控制器(链接到不同状态)更改$ scope.hideBackButton的值对按钮显示没有任何影响.

任何人都可以告诉我如何在每个导航上切换后退按钮显示.我在这里错过了什么?

Vee*_*ees 36

我今天遇到了同样的问题.

最简单的解决方案是使用$ ionicNavBarDelegate:

.controller('AppCtrl', function($scope, $location, $ionicNavBarDelegate) {
   var path = $location.path();
   if (path.indexOf('submit') != -1)
     $ionicNavBarDelegate.showBackButton(false);
   else
     $ionicNavBarDelegate.showBackButton(true);
})
Run Code Online (Sandbox Code Playgroud)

您还可以在对象中包装hideBackButton值,您的代码将起作用:

.controller('AppCtrl', function($scope, $location) {
   var path = $location.path();
   $scope.options = $scope.options || {};
   if (path.indexOf('submit') != -1)
     $scope.options.hideBackButton = true;
   else
     $scope.options.hideBackButton = false;
})
Run Code Online (Sandbox Code Playgroud)

它的工作原理是因为在JS中(和许多其他语言一样)布尔值是通过值传递的,而对象是通过referance传递的,它会影响默认的Angular观察者的创建方式.这种方法的缺点是隐藏按钮不像其他离子解决方案那样平滑.

以防万一,这就是你的html应该是这样的:

第一解决方案

<body ng-app="starter" ng-controller="AppCtrl">
  <ion-nav-bar class="bar-stable">
    <ion-nav-back-button>
    </ion-nav-back-button>
  </ion-nav-bar>
</body>
Run Code Online (Sandbox Code Playgroud)

第二解决方案

<body ng-app="starter" ng-controller="AppCtrl">
  <ion-nav-bar class="bar-stable">
    <ion-nav-back-button hide-back-button="{{options.hideBackButton}}">
    </ion-nav-back-button>
  </ion-nav-bar>
</body>
Run Code Online (Sandbox Code Playgroud)


小智 33

hide-back-button对属性<ion-view>的伎俩对我来说:<ion-view hide-back-button="true">

请参阅此处的官方文档.


Bra*_*tas 30

$ionicHistory.nextViewOptions({
    disableBack: true
  });

  $state.go('app.home');
Run Code Online (Sandbox Code Playgroud)