В моем приложении 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>
Либо добавьте часы:
$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;
}
}
Вместо этого вы пытались использовать $ location?
.controller('mainController', function($scope, $location) {
if($location.path()!='#/home') {
$scope.showHomeButton = true;
}
})