我正在使用ui.router并将这样的导航包含在我的主要html文件中:
<header ng-if-start="logedin()"></header>
<navigation ng-if-end="logedin()"></navigation>
logedin()
bool(boolean) 值将通过以下函数中的angular.module().run()
设置:$rootScope.$on('$stateChangeStart', function(e, to)
如果我在其中一个导航中单击注销,则导航 Controller 将触发此功能:
$scope.logout = function() {
store.remove('jwt');
$state.go('login');
}
问题是在
$state.go
之后,导航没有隐藏,而是在刷新页面之后。我是否需要重新渲染主索引模板/ View (然后重新渲染)?或者我该如何解决这个问题?
最佳答案
所以我自己解决了。抱歉,没有提供logedin()方法。
问题是:
$scope.logedin = function() {
return $rootScope.logedin
}
在
$rootScope.logedin
-function中设置了angular.module().run()
。为了解决这个问题,我必须创建一个简单的getter / setter服务。
angular.module('sample')
.service('sharedLogedIn', function () {
var property = true;
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
});