2013-11-21 11 views
7

Mam obiektu JavaScript, która ma listę sprzedawcówangularjs ForEach wcisnąć nowy element do obiektu

var listRetailers = [ 
{"url":"http://www.fake1.com", "img":"images/1logo.jpg"}, 
{"url":"http://www.fake2.com", "img":"images/2logo.gif"}, 
{"url":"http://www.fake3.com", "img":"images/3logo.gif"}, 
] 

chciałbym pchnąć nowy klucz: wartość w każdej pozycji:

object.push("storeNumber": "1"); 

Tak zaktualizowany obiekt JavaScript będzie

var listRetailers = [ 
{"url":"http://www.fake1.com", "img":"images/1logo.jpg", "storeNumber":"1"}, 
{"url":"http://www.fake2.com", "img":"images/2logo.gif", "storeNumber":"1"}, 
{"url":"http://www.fake3.com", "img":"images/3logo.gif", "storeNumber":"1"}, 
] 

ciągu mojego kątowej kontrolera mam

$scope.retailers = listRetailers ; 

angular.forEach($scope.retailers, function(obj){ 
      obj.push("storeNumber": "1"); 
     }); 

stanach błędów: Obiekt # ma metody 'push'

Co ja tu brakuje?

+0

Który z aspektów Pana (i) zdaniem zawiera JSON? – meagar

+0

@meagar Aktualizowanie obiektu Json. –

Odpowiedz

21

To dlatego, że obj odnosi się do twojego obiektu sprzedawcy detalicznego i nie jest tablicą. If you want to add properties to it, możesz je zdefiniować, korzystając z notacji nawiasów [] lub notacji kropka ..

angular.forEach($scope.retailers, function(obj){ 

    //Using bracket notation 
    obj["storeNumber"] = 1; 

    //Using dot notation 
    obj.storeNumber = 1; 

}); 
+0

tak łatwo mnie to zabije. –

+0

Czy jest jakikolwiek powód, aby wybrać jeden z drugiego, z wyjątkiem osobistych preferencji? –

+2

@ MatthewT.Baker - Absolutnie. Przez większość czasu powinieneś używać notacji kropkowej dla clairty, ale notacja nawiasu pozwala ci robić rzeczy, które po prostu nie są możliwe za pomocą notacji kropkowej. Na przykład można użyć obliczonej właściwości o nazwie "obj [" base "+ num]" lub może być potrzebny identyfikator, który zawiera znaki, które w przeciwnym razie nie byłyby poprawną składnią przy użyciu notacji kropkowej. 'obj [" Mam spacje "]' – Josh

Powiązane problemy