我怎么能总是像lang = en那样在angular请求中添加查询字符串

hua*_*eng 1 angularjs angular-ui-router angular-translate

我们最近正在做I18N,我们有一个菜单来切换语言en,jp和fr之间的语言.一旦我们切换语言,网址变得如下,在网址的末尾有一个查询字符串附加.

http://localhost:3030/loadTests?lang=en
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为我们不会在所有现有链接和href中附加lang参数,如果我们点击网站上的某个链接,则网址将如下:

http://localhost:3030/loadTests/1
Run Code Online (Sandbox Code Playgroud)

查询字符串lang = en没有追加到url的末尾,我们希望lang = en总是追加到url的末尾,我该如何实现呢?

希望我能清楚地描述我的问题.

提前致谢!

Man*_*kla 7

您可以使用Angular JS http拦截器来执行此操作.

    var app = angular.module('myApp', []);

    app.config(function ($httpProvider) {
         $httpProvider.interceptors.push(function ($q) {
             return {
                 'request': function (config) {
                     config.url = config.url + '?lang=en';
                     return config;
                 }

             }
         });
     });
Run Code Online (Sandbox Code Playgroud)

编辑:为了从网址获取当前查询字符串参数,您可以按照此答案.- > 如何在JavaScript中获取查询字符串值?

然后在代码中你可以像这样写:

config.url = config.url + '?lang=' + getParameterByName('lang');
Run Code Online (Sandbox Code Playgroud)