[英]AngularJS - How to use $routeProvider and custom module in config function?
我想重用鏈接。 如何在配置函數中使用$ routeProvider和自定義模塊?
angular.module('urls', []).
factory('$urls', function (
$location
) {
var $urls = {};
$urls.login = function () {
var url = '/login';
return url;
}
return $urls;
});
angular.module('app', ['urls']).
config(function ($routeProvider, $urls) {
$routeProvider.
when($urls.login(), { controller: PageCtrl, templateUrl: 'tem.html' }).
otherwise({ redirectTo: $urls.login() });
});
正如我評論的那樣,您可以創建一個提供程序而不是一個工廠,並將URL放在其中作為中心位置:
angular.module('urls', []).
provider('urls', function (){
this.$get = function(){
var obj = {}
obj.login = function(){ return '/login';}
//more urls here, you don't really need function though
return obj;
}
});
angular.module('app', ['urls']).
config(function ($routeProvider, urlsProvider) {
$routeProvider.
when(urlsProvider.login(), { controller: PageCtrl, templateUrl: 'tem.html' }).
otherwise({ redirectTo: urlsProvider.login() });
});
但是,您不能將$ location服務注入URL提供程序。 但是,如果您確實想使用$ location,則可以創建另一個使用urls服務和$ location服務的服務,以實現相同的效果,如下所示:
angular.module('urls', []).
service('myUrlService', function (urls, $location){
this.goToLogin = function(){$location.path(urls.login());}//just an example
});
然后,您可以將myUrlService注入控制器,並執行以下操作:
myUrlService.goToLogin();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.