拦截URL参数并将其存储在服务中

时间:2016-12-16 18:37:56

标签: angularjs angular-ui-router angular-http-interceptors

我试图拦截输入的网址,获取其参数,将其存储在服务中(可由其他服务使用),然后重定向到/

var config = function (AppConfig, $urlRouterProvider) {
    'ngInject';

    $httpProvider.interceptors.push(function ($q, $location) {
        return {
            'request': function (config) {
                var params = $location.search(); //How can I store these params ?
            }

        }
    });

    $urlRouterProvider.otherwise(AppConfig.defaultRoute);

};

1 个答案:

答案 0 :(得分:0)

您可以定义一个服务或工厂来存储这些值,然后将此服务添加为其他服务的依赖项;

.service('storedURLs', function() {
    var urls= [];
    return {
        add: function(newURL) {
            urls.push(newURL);
        },
        geturls: function() {
            return urls;
        }
    };
})

而且,在你的拦截器中你可以使用:

$httpProvider.interceptors.push(function ($q, $location, $injector) {
        return {
            'request': function (config) {
                var params = $location.search();
                var urlService= $injector.get('storedURLs'); 
                urlService.add(params);
            }

        }
    });