1

我正在使用Satellizer進行身份驗證,登錄後,登錄/註冊按鈕在標題中應該更改爲註銷,但他們不。

這裏是我的頭指令:

angular.module('pages.components.navHeader', [ 
    'common.services.authenticationService' 
]) 

    .directive('navHeader', function() { 
        var directive = {}; 

        directive.restrict = "E"; 
        directive.templateUrl = "navHeader.tpl.html"; 
        directive.controller = ['$scope','$location', 'CONFIG', 'authenticationService', function navHeaderCtrl($scope, $location, CONFIG, authenticationService) { 
         $scope.isAuthenticated = authenticationService.isAuthenticated(); 

         $scope.logout = function(){ 
          authenticationService.logout(); 
         }; 
        }]; 

        return directive; 
       }); 

這裏是我的頭模板的有趣的部分:

<li ng-show="!isAuthenticated"><a ng-href="#">Login</a></li> 
<li ng-show="!isAuthenticated"><a ng-href="#">Register</a></li> 
<li ng-show="isAuthenticated"><a ng-click="logout()" href="#">Logout</a></li> 

我有一個工廠在情況satellizer額外的一層爲不工作我,這只是一個指令,這樣做:

.factory ('authenticationService', ['CONFIG', '$auth', function authenticationService (CONFIG, $auth) { 
    var authentication = {}; 

    authentication.isAuthenticated = function(){ 
     return $auth.isAuthenticated(); 
    }; 
    return authentication; 
}]) 

所以,即使當我點擊註銷,噸他的頭不更新。我是否在我的頭文件中設置isAuthenticated時出錯?

+0

嘗試增加'$範圍$適用();'了'authenticationService.logout後() '方法 –

+0

在你的註銷函數中添加'$ scope.isAuthenticated = authenticationService.isAuthenticated();' –

回答

2

更改控制器代碼這個

$scope.isAuthenticated = authenticationService.isAuthenticated; 

,然後在HTML中你可以簡單地使用。

ng-show="isAuthenticated()" 

注意

ng-show將調用authenticationService.isAuthenticated方法對每個digest週期