Angular ui-router不区分大小写的查询参数

时间:2016-11-09 12:46:02

标签: javascript angularjs angular-ui-router query-parameters

考虑这个州的定义:

$stateProvider.state("someState", {
   url: "/path?someParam",
   controller: function($stateParams){
       console.log("$stateParams", $stateParams.someParam);
   }
});

导航到 / path?someParam = abc 时,$stateParams.someParam符合预期"abc"

导航到 / path?someparam = abc 时,我希望它是一样的。 如何实现呢?

P.S。 $urlMatcherFactoryProvider.caseInsensitive(true);无法解决此问题!

1 个答案:

答案 0 :(得分:0)

根据OP(Alireza Mirian)发布的内容,我使用的是以下模型。它允许使用各种拼写,并且不区分大小写。

$stateProvider.state("someState", {
    url: "/path?otherParam",
    controller: "someController",
    onEnter: function ($stateParams, $location) {
        var parameterOptions = ['parameterOne', 'paramOne', 'firstParameter'];
        var queryParameters = $location.search();
        $stateParams.membershipId = undefined;

        // Loops through the query-string parameters to identify a particular parameter, using a variety of spellings, regardless of case
        for (var p in queryParameters) {
            if (queryParameters.hasOwnProperty(p) && parameterOptions.indexOf((p + "").toLowerCase()) > -1) {
                $stateParams.membershipId = queryParameters[p];
                break;
            }
        }
    }
});