2016-01-14 20 views
2

我使用angularJs爲我的webApp,但我用$stateProvider無處不在定義state.so現在我想用$routeProvider而不是$stateProvider。以及我如何更改路線?是$的位置是很好的改變路徑? 這是我審判代碼$routeProvider

angular.module("angular.states", []) 
    .config(['$routeProvider', '$locationProvider', '$stateProvider'], function ($stateProvider, templateRoot, $routeProvider) { 
     $routeProvider.when('/login?username&message&error', { 
      'templateUrl': '/templates/login.html', 
      'controller': 'LoginController' 
     }); 
     $routeProvider.when('/logout', { 
      'templateUrl': '/templates/logout.html', 
      'controller': 'LogoutController' 
     }); 
    }) 
    .controller('LoginController', function (UserService, $scope, $state, $stateParams, AuthFactory, $timeout, $location) { 
     $scope.login = function (username, password) { 
      UserService.login({ 
       'username': username, 
       'password': password 
      }); 
     }; 
    }) 
    .controller('LogoutController', function (UserService, $scope, $location) { 
     $scope.logout = function() { 
      UserService.logout({}, function() { 
       $location.path("/login", { 
       }); 
      }); 
     }; 
    }); 

我不知道$routeProvider,所以請告訴我如何使用它

+0

看看[這個答案](http://stackoverflow.com/a/27645346/2435473)它有你想要的所有解釋,兩者的優點和缺點是什麼? –

+0

抱歉,什麼是優點和缺點?並請告訴我如何實現'$ routeProvider' –

回答

2

您應該使用$stateProvider代替$routeProvider。因爲您可以使用$stateProvider輕鬆更改您的狀態。 &如果您使用$routeProvider您需要使用位置,路徑,其網址&全部, 您不能與彼此的路線相關,如誰是父母,誰是孩子。 因此$stateProvider總是比較好用。

使用$stateProvider

$stateProvider.state('login', { 
     'url': '/login 
     'templateUrl': '/templates/login.html', 
     'controller': 'LoginController' 
    }); 

在這裏,你可以簡單地給出url你不需要以查找路徑改變你的狀態。

+0

是否需要使用'$ location'? –

+0

不,實際上當你使用'$ stateProvider'時,它直接改變狀態,不需要定位路徑。 –

相關問題