0

如果用户未登录,我的视图中不应显示导航栏 ul。为此,我使用 ng-show="session.exists()"。单击注销按钮(也在导航栏视图中)时,它会调用:

$scope.logout = function () {
  var success = function () {
    $state.transitionTo('login');
  };
  console.log($scope.session.exists());
  Auth.logout().then(success);
  console.log($scope.session.exists());
};

从我的日志语句中,我可以看到会话正在被破坏,但我想要隐藏的 el 元素仍然可见。如果我刷新页面,这些元素将被隐藏。我在这里错过了一个技巧吗?我是 Angular 新手,并且继承了一个项目,因此非常感谢任何建议!

C

4

2 回答 2

0

ngShow当您销毁用户会话时,您的函数可能没有被触发。

我建议你使用一个变量来控制它,并在你的注销功能上设置它。

在您的控制器中:

$scope.loggedIn = true;
$scope.logout = function() {
    $scope.loggedIn = false;
}

在您看来:

<div data-ng-show="loggedIn">Show Me!</div>
于 2013-10-23T12:42:57.030 回答
0

我认为您正在尝试更新负责从异步函数调用中显示导航栏 url 的范围变量,这可能是在 http 调用成功的情况下。所以尝试添加 $scope.$digest(); 在更新范围变量之后

于 2016-09-30T18:51:17.993 回答