我使用$ location.search从url获取params,但它给出了null。 我的网址是http://localhost/Site/?user=12345。
app.controller('UrlController', ['$scope', '$log','$location', function($scope,$log,$location) {
var testsearch = $location.search();
console.log(testsearch);
}])
我希望通过解析网址为用户获取值12345。如何实现这一目标。
我如何从网址解析params。我检查了文档 https://docs.angularjs.org/api/ng/service/ $位置
答案 0 :(得分:2)
您需要使用$window
所以:
var qstring = $window.location.search.substring(1)
;
substring(1)
只会移除?
然后,您可以使用像这样的函数将其解析为对象
String.prototype.parseQuerystring = function () {
var query = {};
var a = this.split('&');
for (var i in a)
{
var b = a[i].split('=');
query[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);
}
return query;
}
并将其命名为:
var qParts = qString.parseQuerystring();
$ location的问题
$location
存在一些已知问题,具体取决于HTML5模式等。其中$ window没有此问题。 E.G https://github.com/angular/angular.js/issues/7239
答案 1 :(得分:0)
如果将$ location配置为使用html5Mode(history.pushState),则需要使用标记指定应用程序的基本URL,或者通过将requireBase:false的定义对象传递给配置$ locationProvider以不需要基本标记$ locationProvider.html5Mode():
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
}]);
请参阅https://docs.angularjs.org/error/ $ location / nobase
要获取url参数,您可以在控制器中使用belwo。你在$ location.search()
中得到一个数组参数 var urlParameter = $location.search();
console.log(urlParameter);