2015-03-03 2 views
0

Я пытаюсь установить url с объектом, который я создал (в угловом). Это массив объектов, который я хотел бы задать в строке url, чтобы сделать свое «состояние сохранения».Создать объект url объекта в угловом

У меня есть объект, как -

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

И я в принципе хочу, чтобы установить, что в качестве объекта URL-адрес, так что я могу получить собственный URL строку для моего состояния - который затем будет интерпретировано на посадку, чтобы изменить state (так что пользователи могут отправлять пользовательские URL-адреса).

Так что прежде, когда он был только один объект, я мог бы передать объект и сделать что-то вроде

$scope.myObject = true; 
$location.search($scope.myObject); 

Но я пытаюсь объединить несколько объектов в один большой объект, так что я могу отслеживать несколько разных состояний в одном месте (на заводе). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить ее работать, если параметр location.search представляет собой массив объектов. Я получаю «неопределенное, это не функция», и он указывает внутри угловой.

Есть ли у вас какие-либо приемы? Могу воспользоваться некоторой помощью, это моя первая попытка. Кроме того, я пытаюсь изменить URL без обновления. Благодаря!

+2

Вашего объектом является массивом объектов, таким образом, не объект, но массив. Объект запускает '{' и заканчивается '}'. Объект может содержать массив (ы). – Michelangelo

ответ

1

Вместо:

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

Try:

{"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. 
+0

А, есть ли способ превратить массив объектов в один объект? – ajmajmajma

+0

@ajmajmajma как насчет 'var obj = {" array1 ": [{" key1 ": true}, {" key2 ": false}]}' – Michelangelo

+0

@ajmajmajma, если этот синтаксис не приходит естественным образом, я настоятельно рекомендую очистить в синтаксисе JSON. Это довольно просто, и это будет очень полезно при написании объектно-ориентированного javascript. –