我想重用链接。 如何在config函数中使用$ 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() });
});
答案 0 :(得分:1)
正如我所评论的那样,您可以创建一个提供者而不是工厂,并将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服务注入到urls提供程序。但是如果你真的想使用$ location,你可以创建另一个同时使用urls服务和$ location服务的服务来实现同样的效果:
angular.module('urls', []).
service('myUrlService', function (urls, $location){
this.goToLogin = function(){$location.path(urls.login());}//just an example
});
然后你可以将myUrlService注入你的控制器并执行以下操作:
myUrlService.goToLogin();