簡體   English   中英

AngularJS-如何在配置函數中使用$ routeProvider和自定義模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM