Динамически отображать кнопку «Домой» в строке заголовка в Ionic

0

В моем приложении Ionic я хочу показать кнопку "Назад домой" в панели заголовка на всех страницах, кроме главной страницы. Я пытаюсь сделать это с помощью boolean, для которого установлено значение false, когда $ state.current.name равно домашнему.

В директиве ng-show я использую это логическое значение, чтобы показать или скрыть домашнюю кнопку. К сожалению, логическое значение всегда установлено в true, и поэтому кнопка также отображается на главной странице. Как я могу это решить?

Мой контроллер в app.js

.controller('mainController', function($scope, $state) {
    $scope.showHomeButton = true;

    if ($state.current.name == 'home') {
        $scope.showHomeButton = false;
    }
})

Выдержка из index.html

<body ng-app="chartly" ng-controller="mainController">
  <ion-nav-bar class="bar-positive">
      <ion-nav-back-button class="button-clear">
          <i class="icon ion-ios-arrow-left"></i>
      </ion-nav-back-button>
      <ion-nav-buttons side="right" ng-show="showHomeButton">
          <a href="/#/home" class="button icon ion-home"></a>
      </ion-nav-buttons>
  </ion-nav-bar>
  <ion-nav-view>
  </ion-nav-view>

Теги:
ionic-framework

2 ответа

0

Либо добавьте часы:

$scope.$watch(function(){
    return $state.current.name;
}, function(new){
    if (new === 'home') {
        $scope.showHomeButton = false;
    }
});

Или, если это не работает, слушайте тогда событие $ stateChangeSuccess в вашем основном контроллере

$rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){ 
if (toState.name === 'home') {
        $scope.showHomeButton = false;
    }

}
  • 0
    Решение с $ rootScope всегда приводит к ложному. Фактически, toState.name всегда равно 'home'. Есть ли у вас идеи, почему это не изменится?
  • 0
    используйте директиву ui-sref в шаблоне для запуска навигации по состоянию вместо href (вам может понадобиться добавить href = "#" в тег <a>, но ui-sref также работает с тегами button или div). Или используйте $ state.go в javascript. Документация: angular-ui.github.io/ui-router/site/#/api/…
0

Вместо этого вы пытались использовать $ location?

.controller('mainController', function($scope, $location) {
    if($location.path()!='#/home') {
        $scope.showHomeButton = true;
    }
})
  • 0
    $ location.path () дает / как результат на всех страницах. У тебя есть идеи почему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню