Цикл Angular Digest выполняется, но значение ng-bind не обновляется
У меня есть родительское представление, которое содержит панель навигации, и внутри этого представления у меня есть<div ui-view>
элемент, который делает все, что я смотрю на ребенка.
Я хочу условно показать / скрыть панель навигации в родительском представлении, основываясь на маршруте дочернего представления. Прямо сейчас у меня есть это:
<nav ng-show="!vm.hideNavbar">
Когда мое приложение загружается в первый раз,vm.hideNavbar
установлен в true, и это работает как ожидалось.
Послеvm.hideNavbar
изменено на false, связанное значение не обновляется. Это все ещеtrue
.
Каждый контроллер в моем приложении расширяет этоBaseController
:
export class BaseController {
public hideNavbar: boolean;
constructor(public $scope: IBaseScope, private $state: ng.ui.IStateService) {
if ($state.current.url === '/login') {
this.hideNavbar = true;
} else {
this.hideNavbar = false;
}
$scope.vm = this;
}
}
Таким образом, каждый раз, когда загружается новый контроллер, он вызывает конструктор дляBaseController
и условно устанавливает$scope.vm.hideNavbar
, Если я сразу бегу$scope.$apply()
в конце этого конструктора выдает ошибки углового выброса, говоря, что цикл дайджеста уже запущен.
Итак, цикл дайджеста выполняется, но значение, на мой взгляд, не обновляется. Моя единственная мысль состоит в том, что я создал несколько экземпляровBaseController
так как мой первоначальный контроллер и контроллер, по которому я перемещался, расширяют этот контроллер. Итак, теперь моя связанная ценностьvm.hideNavbar
все еще смотрит на старый контроллер.
Я на правильном пути с этим? Как я могу решить эту проблему?