控制选项卡显示的HTML代码段:
<li class="presentation" ng-show="currentUserAuthority == LIBRARIAN" >……
问题是这个变量"currentUserAuthority“直到网页初始化后才会更新。因此,每个人都被初始化为GUEST,并且任何人都看不到LIBRARIAN选项卡。在AngularJS中有什么方法可以解决这个问题吗?我知道如果我对Javascript/Angular有很好的理解,这可能会很容易,但我不是。
编辑:我正在添加代码,以澄清,根据要求。我继承了这段代码,所以我不得不摸索着通过它。基本上,有一个带有控制器的MYPANEL.html和一个附带的MYPANEL.js。这个问题似乎是一个时机问题。在login.js完成从后端接收角色之前,MYPANEL.js将currentUserAuthority视为默认来宾,并将currentUserAuthority设置为库管理员。我在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一个变量已经更改,这样我的选项卡才能正确显示。感谢您所能提供的任何帮助。
发布于 2019-01-24 23:11:35
我认为您需要在ng-show条件中使用单引号将字符串值括起来
<li class="presentation" ng-show="currentUserAuthority == 'LIBRARIAN'" >Librarian</li>
https://stackoverflow.com/questions/54348431
复制相似问题