【问题标题】:Intercept URL parameters and store them in a service拦截 URL 参数并将它们存储在服务中
【发布时间】:2017-05-02 14:40:45
【问题描述】:

我正在尝试拦截输入的 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);

};

【问题讨论】:

  • 在根范围内声明一个变量,用来保存数据。或者你可以使用 localStoragesessionStorage 取决于。

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


【解决方案1】:

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

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

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多