AngularJS-如何在配置函数中使用$routeProvider和自定义模块

AngularJS - How to use $routeProvider and custom module in config function?

本文关键字:routeProvider 模块 自定义 配置 函数 AngularJS-      更新时间:2023-09-26

我想重用链接。如何在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() });
});

正如我所评论的,您可以创建一个提供者而不是工厂,并将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();