我正在使用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;
            }
        };
    });

09-17 10:23