有角度或纯JS的$ .param相当于?

时间:2015-01-29 19:17:21

标签: javascript jquery angularjs

我正在构建一个页面状态管理器,它与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解决方案?

1 个答案:

答案 0 :(得分:1)

您应该使用Angular的$location服务,而不是手动修改网址。这将处理在Angular应用程序中为您操作URL的所有复杂性。

此外,要在URL中包含对象,您需要以某种方式显式地对其进行序列化。 jQuery使用JSON,这在这里很有意义。因此,要在网址中设置state参数,您需要使用以下方法:

$location.search('state', JSON.stringify({ globals: { test: true, account: 5 }}));