我正在使用ui.router并在我的主html文件中包含我的导航:
<header ng-if-start="logedin()"></header>
<navigation ng-if-end="logedin()"></navigation>
logedin()
布尔值将通过此函数中的angular.module().run()
设置:
$rootScope.$on('$stateChangeStart', function(e, to)
如果我在其中一个导航中点击退出,导航控制器将触发此功能:
$scope.logout = function() {
store.remove('jwt');
$state.go('login');
}
问题是$state.go
导航未隐藏,但刷新页面后。
我是否必须重新渲染主索引模板/视图(以及如何)?或者我怎么能解决这个问题?
答案 0 :(得分:4)
所以我自己解决了。很抱歉没有提供logedin()方法。
问题是:
$scope.logedin = function() {
return $rootScope.logedin
}
在$rootScope.logedin
- 函数中设置了angular.module().run()
。
要解决这个问题,我必须创建一个简单的getter / setter服务。
angular.module('sample')
.service('sharedLogedIn', function () {
var property = true;
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
});
答案 1 :(得分:1)
很高兴知道问题已经解决。可能发生的事情是你的价值没有传播......我可能会这样做以排除故障:
<header ng-if="loggedinBool"></header>
<navigation ng-if="loggedinBool"></navigation>
1)将loggedin()值分配给范围模型或服务属性(最好)loggedinBool,并查看值是否在logout后传播,这会改变loggedinBool值。
2)如果这不起作用,请在loggout中尝试$ broadcast / $ emit并捕获它以更改loggedinBool的值。这应该自动提供双向绑定其他尝试$ scope.digest()或$ scope.apply()方法以查看值是否传播。