2015-09-01 48 views
0
.run(function ($rootScope, $location, Data) { 
     $rootScope.$on("$routeChangeStart", function (event, next, current) { 
      $rootScope.authenticated = false; 
      Data.get('session').then(function (results) { 
       if (results.uid) { 
        $rootScope.authenticated = true; 
        $rootScope.uid = results.uid; 
        $rootScope.name = results.name; 
        $rootScope.email = results.email; 
       } else { 
        var nextUrl = next.$$route.originalPath; 
        if (nextUrl == '/signup' || nextUrl == '/login') { 

        } else { 
         $location.path("/login"); 
        } 
       } 
      }); 
     }); 
    }); 

現在我想用$ rootscope.authenticated要做的就是隱藏基於真或假Angularjs進行連接運行變量控制器

<div ng-hide="" class="collapse navbar-collapse navbar-menubuilder"> 
     <ul class="nav navbar-nav navbar-left"> 
      <li><a href="#/dashboard">Home</a> 
      </li> 
      <li><a href="#/meldingen">Meldingen</a> 
      </li> 
      <li><a href="#/about-us">About Us</a> 
      </li> 
      <li><a href="/contact">Contact Us</a> 
      </li> 
     </ul> 
    </div> 

這是菜單的菜單現在我試圖用NG隱藏=「認證」,但它似乎沒有工作了,我不就如何獲得認證值控制器

希望的線索,你可以幫我出

+0

如果$ rootscope.authenticated值爲true或false,您是否檢查控制檯? –

+0

當你建立會話時,你有沒有在數據本身嘗試過這樣做? –

+0

我想他可能每次都會弄虛作假。 –

回答

0

進樣$rootScope進入控制器並暴露authenticated,如下所示:$scope.authenticated = $rootScope.authenticated,確保控制器在aprt tempalte中可用。我通過在整個網站上聲明的AppCtrl解決了這個問題<html ng-controller="AppCtrl">

+1

更好會維護服務而不是'$ rootScope' –

+0

同意,最好的方法存儲和共享狀態是通過使用服務! – tomastrajan

+0

我該怎麼做? –