我正在使用以下代码从AngularJs Controller发送嵌套对象作为查询参数:
$scope.redirect = function () {
const params = $httpParamSerializer({
initval: {
user: {
id: 1,
name: 'Username',
}
}
})
$location.path('/url-to-other-controller').search(params);
})
并且我必须在我的其他控制器中以对象的形式接收此查询字符串,我尝试了几种方法,最终使用了以下代码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
我不确定我的方法以及是否有更干净的方法,因为我必须解析第一个参数(初始值)的结果。
这里的主要问题是如何正确接收查询字符串,该字符串最初是angularJS中的对象? 这是发送对象作为查询参数的正确方法吗?
答案 0 :(得分:0)
如果您使用的是JSON.parse
,那么最好使用JSON.stringify
:
$scope.redirect = function () {
const params = {
initval: JSON.stringify({
user: {
id: 1,
name: 'Username',
})
}
}
$location.path('/url-to-other-controller').search(params);
})
然后解码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
$httpParamSerializer
和$httpParamSerializerJQLike
服务使用数组处理时髦的事情,这些数组随后在JavaScript中无法很好地解析。
$httpParamSerializer
和$httpParamSerializerJQLike
服务用于与PHP和Ruby on Rails等语言和框架进行通信。