拦截 URL 个参数并将它们存储在服务中

Intercept URL parameters and store them in a service

我正在尝试拦截输入的 URL,获取它的参数,将它们存储在一个服务中(可以被其他服务使用)然后重定向到 /.

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);

};

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

.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);
            }

        }
    });