我正在尝试使用我创建的对象设置一个url(以角度为单位)。它是一个对象数组,我会让它在url字符串上设置一个" save state"。
我的对象就像 -
[{"key1" : true}, {"key2" : false}];
我基本上想把它设置为url对象,这样我就可以为我的状态获取一个自定义url字符串 - 然后在登陆时解释它以更改状态(这样用户就可以发送自定义URL)。
所以在它只是一个对象之前,我可以传递对象并执行类似
的操作$scope.myObject = true;
$location.search($scope.myObject);
但我试图将一些物体组合成一个大物体,这样我就可以在一个地方(工厂里)跟踪几种不同的状态。我遇到的问题是,如果location.search参数是一个对象数组,我似乎无法使它工作。我得到一个"未定义的不是一个函数"并且它指向角度内部。
这有什么窍门吗?可以使用一些帮助,这是我第一次尝试这个。此外,我试图更改网址而不刷新。谢谢!
答案 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.