以角度为单位从对象创建url对象

时间:2015-03-03 16:50:32

标签: javascript angularjs url

我正在尝试使用我创建的对象设置一个url(以角度为单位)。它是一个对象数组,我会让它在url字符串上设置一个" save state"。

我的对象就像 -

  [{"key1" : true}, {"key2" :  false}];

我基本上想把它设置为url对象,这样我就可以为我的状态获取一个自定义url字符串 - 然后在登陆时解释它以更改状态(这样用户就可以发送自定义URL)。

所以在它只是一个对象之前,我可以传递对象并执行类似

的操作
$scope.myObject = true;
$location.search($scope.myObject);

但我试图将一些物体组合成一个大物体,这样我就可以在一个地方(工厂里)跟踪几种不同的状态。我遇到的问题是,如果location.search参数是一个对象数组,我似乎无法使它工作。我得到一个"未定义的不是一个函数"并且它指向角度内部。

这有什么窍门吗?可以使用一些帮助,这是我第一次尝试这个。此外,我试图更改网址而不刷新。谢谢!

1 个答案:

答案 0 :(得分:1)

而不是:

[{"key1" : true}, {"key2" :  false}];

尝试:

{"key1" : true, "key2" :  false};

这是“一个大对象”的正确JSON语法。

要从一个对象数组转到一个大对象,必须遍历数组并构建一个新对象,其中包含从数组中发现的属性:

var newObj = {};
var oldArray = [{"key1" : true}, {"key2" :  false}];
for (var i = 0; i < oldArray.length; i++) {
    var obj = oldArray[i];
    for (param in obj) {
        newObj[param] = obj[param];
    }
}
// newObj is now one big object.