ng-show在变量值更改后未显示/隐藏HTML列表

时间:2014-10-27 16:14:28

标签: angularjs

我最近开始构建一些功能,以根据用户在系统中的权限来限制用户在UI中看到的内容。

当用户第一次访问该站点时,有一个列表项包含默认隐藏的管理菜单。当用户成功登录时,如果用户具有正确的用户权限,则现在应显示列表项。这是li的代码:

<li ng-show="isAdministrator">
... items here
</li>

在我的控制器上,我有以下代码:

$scope.isAdministrator = authService.isUserAdmin;

此时,如果我在console.log中将authService.isUserAdmin值设置为true,但列表项仍未显示。如果我手动刷新页面,则会显示列表项。当我退出时会发生相反的情况。注销后,authService.isUserAdmin设置为false,但列表项仍会显示,直到我刷新页面。

我只能假设我遗漏了一些非常基本但我无法找到问题的东西。简而言之,列表的代码位于一个div中,该控制器将ng-controller设置为正确的控制器,并且该列表尚未重构为指令。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

也许这与authService.isUserAdmin是原始类型有关。试试这个:

控制器:

$scope.authServ = authService;

视图:

<li ng-show="authServ.isUserAdmin">...</li>    

答案 1 :(得分:2)

我确信在$scope.isAdministrator = authService.isUserAdmin执行

之前执行authService.isUserAdmin

使用此代码:

in html:

<li ng-show="ser.isUserAdmin">
... items here
</li>
控制器中的

$scope.ser= authService;