2013-11-21 19 views
7

içine yeni bir öğe itmekangularjs ForEach ben perakendecilerin bir listesi vardır bir JavaScript nesne var nesne

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"}, 
] 

Ben yeni bir anahtar PUSH istiyorum: Yani

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

: her öğenin içine değerini güncellenmiş JavaScript nesnesi ben

sahip benim açısal denetleyici içinde

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"}, 
] 

olacak

$scope.retailers = listRetailers ; 

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

hata durumları: Nesne # Buraya ne eksik hiçbir yöntem push '

sahiptir?

+0

Bunun hangi bölümünün JSON içerdiğini düşünüyorsunuz? – meagar

+0

@meagar json nesnesinin güncellenmesi. –

cevap

21

Bunun nedeni, obj ürün satıcınız için geçerlidir ve dizisidir. If you want to add properties to it, [] göstergesini kullanarak ya da . notasyonu kullanarak tanımlayabilirsiniz.

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

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

    //Using dot notation 
    obj.storeNumber = 1; 

}); 
+0

öylesine basit ki beni öldürüyor .. –

+0

Kişisel tercihi dışında, diğerini seçmek için herhangi bir sebep var mı? –

+2

@ MatthewT.Baker - Kesinlikle. Çoğu zaman cıvıldamak için nokta notasyonu kullanmalısınız, ancak parantez notasyonu nokta notasyonu kullanarak mümkün olmayan şeyleri yapmanıza izin verir. Örneğin, hesaplanmış bir özellik adı 'obj ["base" + num] 'kullanabilir veya aksi halde nokta gösterimi kullanarak geçerli bir sözdizimi olmayan karakterler içeren bir tanımlayıcı isteyebilirsiniz. 'obj [" Boşluklarım var "]' – Josh

İlgili konular