Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-如何在配置函数中使用$routeProvider和自定义模块?_Javascript_Angularjs - Fatal编程技术网

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

Javascript AngularJS-如何在配置函数中使用$routeProvider和自定义模块?,javascript,angularjs,Javascript,Angularjs,我想重新使用链接。 如何在配置函数中使用$routeProvider和自定义模块 angular.module('urls', []). factory('$urls', function ( $location ) { var $urls = {}; $urls.login = function () { var url = '/login'; return url; } return $urls;

我想重新使用链接。 如何在配置函数中使用$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,可以创建另一个同时使用URL服务和$location服务的服务,以达到如下效果:

    angular.module('urls', []).
        service('myUrlService', function (urls, $location){
                 this.goToLogin = function(){$location.path(urls.login());}//just an example
        });
myUrlService.goToLogin();
然后,您可以将myUrlService注入控制器并执行以下操作:

    angular.module('urls', []).
        service('myUrlService', function (urls, $location){
                 this.goToLogin = function(){$location.path(urls.login());}//just an example
        });
myUrlService.goToLogin();

不能将$url插入配置,只能插入提供程序。您可以尝试创建一个提供者(而不是工厂)。谢谢!你能说,我怎么能同时使用-URL和$location服务呢?我尝试:
angular.module('url',[])。provider('url',function($location){this.$get=function(){var obj={}obj.login=function(redirect){if(redirect==true)$location.url('/login');返回'/login';}//此处的URL越多,虽然返回obj;}}),但实际上不需要函数否,不能向提供程序注入$location。您可以使用“服务”或“工厂”方法创建服务。我会更新这个问题的答案