【问题标题】:How do you retrieve "GET" parameters without $location?如何在没有 $location 的情况下检索“GET”参数?
【发布时间】:2014-05-13 14:32:59
【问题描述】:

我正在尝试使用 angularJS 从页面的 url 中检索 GET 参数。我能够使用$location 服务检索它们,但这会导致问题(请参阅https://github.com/angular/angular.js/issues/4608)。看来这个问题将在 1.3.x 中的某个时候得到修复,但我迫不及待地等待包含此修复的稳定版本。

那么还有其他方法可以检索 GET 参数吗?


示例:

网址:mysite.com/shop/?id=1&size=2

我需要找回这个:

{
  id: '1',
  size: '2'
}

【问题讨论】:

    标签: angularjs url hyperlink get


    【解决方案1】:

    我相信 $location 在某种程度上是浏览器位置对象的代理(有助于提高可测试性等)。如果你不想要这种依赖,我会从How do I parse a URL query parameters, in Javascript? 那里得到解决方案,只需编写一个服务来为你做这件事:

    var app = angular.module('myApp', []);
    
    app.factory('myCustomLocation', [function(){
    
       return {
          search: function(){
              var query = location.search.substr(1);
              var data = query.split("&");
              var result = {};
              for(var i=0; i<data.length; i++) {
                   var item = data[i].split("=");
                   result[item[0]] = item[1];
              }
              return result;
          }
       }
    }]);
    

    【讨论】:

    • 很好,我没有意识到位置是窗口的属性。这使它更容易一些。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多