2016-05-25 32 views
1

在我的AngularJS應用程序中,我有多個route.js文件控制着我所有的路線。

作爲默認我有路線"/"等於"/main",但是有沒有辦法稍後覆蓋?

比方說,我有一個route.js這樣的:

angular.module('myApp') 
.config(function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.when('/','/main'); 

    $stateProvider 
     .state('main', { 
      url: "/main", 
      templateUrl: 'main.html', 
      controller: 'mainController' 
     }); 
}); 


但後來我想動態覆蓋此默認路由,從route2.js一個新

angular.module('myApp') 
.config(function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.when('/','/newMain'); 

    $stateProvider 
     .state('newMain', { 
      url: "/newMain", 
      templateUrl: 'newMain.html', 
      controller: 'newMainController' 
     }); 
}); 
+0

你如何確保route2.js總是加載後route.js? – seekers01

回答

1

A .when設置不僅可以提供一個常量,它甚至可以是一個函數。

所以,讓我們有一些設置(如幼稚全球var useDifferent = false;和鉤上的決定:

$urlRouterProvider.when("/other", function(){ 
    if(useDifferent){ 
     return "/newMain"; 
    } 
    return "/Main"; 
}); 

之後,任何人都可以直接變更設定useDifferent = true(或造成一定更多,更多的智能和正確的處理...)