2014-12-23 23 views
0

我app.js文件看起來像這樣:在Angular中加載路徑中的不同模板和控制器?

angular.module('airline', ['ngRoute', 'airlineServices', 'ngCookies']) 
    .config(airlineRouter); 

function airlineRouter($routeProvider){ 
    $routeProvider 
     .when('/', { 
      templateUrl: 'partials/destinations.html', 
      controller: 'DestinationsCtrl' 
     }) 
     .when('/airports/:airportCode', { 
      templateUrl: 'partials/airport.html', 
      controller: 'AirportCtrl' 
     }) 
     .when('/airports/:airport1/:airport2', { 
      templateUrl: 'partials/two_airports.html', 
      controller: 'TwoAirportsCtrl' 
     }) 
     .when('/flights', { 
      templateUrl: 'partials/flights.html', 
      controller: 'FlightsCtrl' 
     }) 
     .when('/reservations', { 
      templateUrl: 'partials/reservations.html', 
      controller: 'ReservationsCtrl' 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }); 
}; 

現在我只是想,如果用戶登錄,我可以很容易地從餅乾發送令牌到服務器並得到響應嘗試,我希望加載視圖和控制器,但是如果用戶沒有登錄,我只想加載登錄視圖和登錄控制器?如何配置'/'路線,以便加載不同的視圖和控制器?

回答

1

視圖將會動態加載,因此您不必擔心它們。控制器是你的設置的一部分,所以你不需要擔心它們。 你想要做的是根據用戶是否被認證來顯示一個視圖。

當用戶驗證要設置一個屬性的地方,可能在$ rootScope,然後就可以顯示不同的視圖,類似如下代碼:

<div data-ng-if="application.isAuthenticated()"> 
 

 
    <div> 
 
    I am logged in 
 

 
    </div> 
 
</div> 
 

 
<div data-ng-if="!application.isAuthenticated()"> 
 
    hello anon, please login. 
 
    <button class="btn btn-primary" ng-click="application.login()">Login</button> 
 
</div>

相關問題