【问题标题】:ng-show not showing/hiding HTML List after variable value changeng-show 变量值更改后不显示/隐藏 HTML 列表
【发布时间】:2014-10-27 16:14:27
【问题描述】:

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

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

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

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

$scope.isAdministrator = authService.isUserAdmin;

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

我只能假设我遗漏了一些非常基本的东西,但我找不到问题所在。顺便提一下,列表的代码位于 div 中,该 div 将 ng-controller 设置为正确的控制器,并且列表尚未重构为指令。

任何帮助将不胜感激

【问题讨论】:

  • 如何在authService中设置isUserAdmin
  • $scope.isAdministrator = authService.isUserAdmin; authService 被注入到控制器中
  • @StevenMcD 围绕它的代码是什么?最好的猜测是 $digest 没有接收到变化。

标签: angularjs


【解决方案1】:

我确信$scope.isAdministrator = authService.isUserAdminauthService.isUserAdmin 执行之前执行

使用此代码:

在 html 中:

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

在控制器中:

$scope.ser= authService;

【讨论】:

    【解决方案2】:

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

    控制器:

    $scope.authServ = authService;
    

    查看:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2015-07-03
      相关资源
      最近更新 更多