Сбросить значение $rootscope, используемое для скрытия кнопки «Назад»

Я использую ng-hide, чтобы скрыть кнопку «Назад» и показать ее на необходимых страницах. В app.js у меня есть следующий код, где я объявляю начальное значение как true:

var app = angular.module('myApp', ['ui.bootstrap', 'ui.router', 'ui.mask', 'ngSanitize', 'ngAnimate', 'input-digits', 'input-phone','dailyTips']).run(function ($rootScope) {
    $rootScope.hideNavBackBtn = true;
});

И после этого в каждом контроллере, где я хочу, чтобы отображалась кнопка «Назад», я устанавливаю значение как:

$rootScope.hideNavBackBtn = false;

Но когда я возвращаюсь на предыдущую страницу, кнопка «Назад» есть, этого не должно происходить. Кнопка «Назад» должна отображаться только для определенных страниц, где я объявил значение ложным.

Как исправить эту проблему?

Насколько я понимаю, app.js уже загружен, поэтому, когда я вернусь, значение $ rootScope останется ложным. Если я правильно понимаю, как это исправить?

В функции конфигурации файла app.js я объявил другое состояние, например:

.state('home.overview', {
        url: '/overview',
        templateUrl: 'modules/Overview.html',
    })

В этом случае, если я определяю контроллер и устанавливаю значение true. Тогда кнопки назад не будет видно. Но тогда я должен определить значение $rootscope в каждом состоянии, которое я создаю, что не похоже на жизнеспособное решение.


person Veer    schedule 19.10.2016    source источник
comment
Какую спину вы используете? Браузер один или?   -  person Igor Janković    schedule 19.10.2016


Ответы (1)


Ваш $rootScope.hideNavBackBtn = true; выполняется только один раз, когда ваш модуль Angular инициализирован.

Вы меняете значение ($rootScope.hideNavBackBtn = false;) только в каком-то контроллере, чтобы установить его на false. Вы больше никогда не устанавливаете его на true.

что вы можете сделать, так это установить его на true на ng-click этой кнопки.

person Romain Linsolas    schedule 19.10.2016
comment
Я думаю, что ng-init будет лучше, чем ng-click. - person tomek550; 19.10.2016