我有一个标题视图
<div ng-controller="navCtrl">
<ul class="nav navbar-nav" ng-show="isAuthenticated">
<li> <a ui-sref="logout"> Logout </a> </li>
</ul>
</div>
导航控制器
(function(){
var navigationController = function($scope, authToken){
$scope.isAuthenticated = authToken.isAuthenticated(); //return bool
};
navigationController.$inject = ['$scope','authToken'];
angular.module('simpleApp')
.controller('navCtrl', navigationController);
}());
我有另一个退出控制器
(function(){
var logoutController = function($scope ,authToken, $state){
$scope.isAuthenticated = false;
$state.go('main');
};
logoutController.$inject = ['$scope', 'authToken', '$state'];
angular.module('simpleApp')
.controller('logoutCtrl', logoutController);
}());
当我点击Logout链接时,我设置$scope.isAuthenticated = false;
,期望导航菜单隐藏但是它很有用。
似乎有些事情以错误的方式完成:(
答案 0 :(得分:1)
范围粘贴到DOM元素,并且可能彼此粘合。它们不是单例,它们没有连接到模块(它们用作模型层,而不是服务层)。
由于范围可以构成层次结构,因此可以将公共数据保留在最顶层的范围内;通过这种方式,可以从任何后代范围访问它。
答案 1 :(得分:1)
将两个控制器中的$ scope更改为$ rootScope。 $ rootScope是最重要的范围。
仅供记录:这不是我首选的解决方案,我会选择服务。