2016-05-25 22 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(或造成一定更多,更多的智能和正确的处理...)