Как мне сделать эту вкладку HTML видимой, основываясь на ng-show и внешней переменной - новенький вопрос AngularJS - PullRequest
0 голосов
/ 24 января 2019

Фрагмент HTML, который контролирует представление вкладки:

<li class="presentation" ng-show="currentUserAuthority == LIBRARIAN" >

....

Проблема заключается в том, что эта переменная "currentUserAuthority" не обновляется до тех пор, пока веб-страница не будетинициализируется.Таким образом, все инициализируются как GUEST, а вкладка LIBRARIAN никому не видна.Есть ли способ в AngularJS это исправить?Я знаю, что это было бы легко, если бы у меня было хорошее понимание Javascript / Angular, но я не знаю.

РЕДАКТИРОВАТЬ: Я добавляю код, чтобы уточнить, как и просили.Я унаследовал этот код, поэтому мне нужно прочувствовать его.По сути, есть MYPANEL.html и сопровождающий MYPANEL.js, который имеет контроллер.Проблема, кажется, проблема времени.MYPANEL.js видит currentUserAuthority в качестве GUEST по умолчанию перед тем, как login.js заканчивает получать роль из бэкэнда, и устанавливает currentUserAuthority в LIBRARIAN.У меня есть подпрограмма наблюдения в MYPANEL.js, которая, насколько я понимаю, должна действовать как своего рода слушатель событий и сообщать всем, что переменная изменилась, включая веб-страницу.Код просмотра выглядит следующим образом.

$scope.$watch('GlobalService.currentUserAuthority`,function() {
$scope.currentUserAuthority = GlobalService.currentUserAuthority;
LoggingService.info('WATCH FIRED: current value is '+ $scope.currentUserAuthority);
$scope.$apply();
});

Из журналов видно, что $ watch выполняется только в том порядке, в котором он указан в коде MYPANE.js, и позже, когда я могу проверить, что переменная отслеживаетсяизменилось, эта функция не вызывается.

Так что я делаю не так?Мне нужно уведомить mypane.html, что переменная изменилась, и моя вкладка отображается правильно.Спасибо за любую помощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 24 января 2019

Полагаю, вам нужно указывать одинарную кавычку вокруг строкового значения в вашем состоянии ng-show

<li class="presentation" ng-show="currentUserAuthority == 'LIBRARIAN'" >Librarian</li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...