使用AngularJS解析查询字符串而不使用html5mode的最佳方法

时间:2013-12-19 21:50:40

标签: javascript angularjs

使用 html5mode 解析Angular 中没有的查询字符串的最佳方法是什么? (不使用html5mode,因为我们需要支持旧浏览器

无论是否使用哈希,我都会得到相同的未定义结果:

http://localhost/test?param1=abc&param2=def
http://localhost/test#/param1=abc&param2=def

$ routeParams和$ location.search()都返回undefined:

var app = angular.module('plunker', ["ngRoute"]);

app.controller('MainCtrl', ["$scope", "$routeParams", "$location",
  function($scope, $routeParams, $location) {

  console.log($routeParams, $routeParams.abc); //undefined, undefined
  console.log($location.search(), $location.search().abc); //undefined, undefined

}]);

我可以自己解析window.location.search,但我希望在Angular中有更好的方法。

Plnkr:http://plnkr.co/edit/alBGFAkfqncVyK7iv8Ia?p=preview

我已阅读this post但尚未找到解决方案。我肯定错过了什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:32)

查询参数应该在哈希之后:

http://localhost/test#/?param1=abc&param2=def

这应该允许$location.search()返回如下对象:

{
  param1: 'abc',
  param2: 'def'
}