我正在构建一个页面状态管理器,它与URL中的对象同步,可以向下或向下推送更改。
angular项目不包含jQuery,因此我需要找到等效的$.param()
,以便将更改从范围推送到URL。我见过这个:
function param(object){
return Object.keys(object).map(function(k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(object[k])
}).join('&');
}
但它似乎只有一个级别而且在以下情况下失败:
var test = { state : { globals: {test: true, account: 5}}}
// returns "state=%5Bobject%20Object%5D"
角度是否有内置的内容我可以使用或者是否有其他可以插入的纯JS解决方案?
答案 0 :(得分:1)
您应该使用Angular的$location
服务,而不是手动修改网址。这将处理在Angular应用程序中为您操作URL的所有复杂性。
此外,要在URL中包含对象,您需要以某种方式显式地对其进行序列化。 jQuery使用JSON,这在这里很有意义。因此,要在网址中设置state
参数,您需要使用以下方法:
$location.search('state', JSON.stringify({ globals: { test: true, account: 5 }}));