2016-04-11 10 views
1

Aşağıdaki Eğik Görünüm vardır: denetleyici olarakNg-repeat Array.push kullanırken her öğe için ayrı Kapsam'ı oluşturmak görünmüyor()

<div ng-repeat="item in items track by $index"> 
    <input ng-model="item.name"/> 
</div> 

, bir Json almak için bir hizmet diyoruz

$http.post("/NewItemJson").then(function (response) { 
    $scope.newItem = response.data; 
}); 

$scope.addItem = function() { 
    $scope.items.push($scope.newItem); 
}; 

Ama Görünüm test ederken, bütün yeni öğeler bağlanmıştır addItem() işlevi yoluyla eklendi görüyoruz: yeni boş öğenin gösterimi bu yüzden aşağıdaki işlevi ile diziye ekleyebilirsiniz aynı kapsam. Ben girişlerin birini değiştirmek çünkü eğer, diğerleri aynı anda değiştirmek söyleyebilirim: Bu çok garip

enter image description here

, ng-repeat her öğe için farklı bir kapsam oluşturmalısınız çünkü. Ve aslında, addItem() işleviyle eklenmemiş olan dizinin tüm öğeleri için ... ama bu durumda değil. Neyi kaçırıyorum?

+1

AddItem çağırır kodunuz nerede? Aynı öğeyi eklemek mümkün mü? –

+0

ng-click = "addItem()" ile View'den işlevi çağırıyorum. Eklediğim öğeler boş nesneler ... Tüm Kimlikler boş Rehberler. Sorun bu olabilir mi? – tocqueville

cevap

2

addItem()'u çalıştırdığınızda $scope.newItem'u yenilemezsiniz, böylece aynı öğeyi tekrar tekrar ekliyorsunuz demektir. Bunu deneyin:

$scope.addItem = function() { 
    $scope.items.push(angular.copy($scope.newItem)); 
}; 
+0

Doğru. Çok teşekkür ederim! – tocqueville

İlgili konular