2016-04-07 20 views
0

ng-repeat (denetleyicimi vm olarak kullanıyorum) kullanarak yeni bir kişi eklediğimde, güncel kişileri düzenlediğimde veya kişileri sildiğimde güncelleştiren bir kişiler listesi var. listeyi denediğime ve filtrelemeye değil. İşteNg-Repeat Dizi Değişikliği Sıfırlamadı

<div ng-repeat="contact in vm.contacts | filter:query | orderBy:'firstname' track by contact._id" class="list-item pointer" ng-class="{'dker': contact.selected }" ng-click="vm.selectContact(contact)"> 

İşte çalışır benim Silme işlevi var ng-repeat var:

 function deleteContact(contact){ 
     vm.contacts.splice(vm.contacts.indexOf(contact), 1); 
     Stamplay.Object('contact') 
      .remove(contact._id, function(err, res) { 
      if(err) return console.log(err); 
      console.log(res); 
      }) 
     selectOne(); 
     }; 

İşte ng-repeat liste güncellenmiyorsa benim filtreleme fonksiyonu var (ben vm.contacts olduğunu kontrol ettik değiştirmeyen):

 function filterContacts(group){ 
     angular.forEach(vm.contacts, function(contact){ 
      if(contact.groups){ 
      if(contact.groups.indexOf(group.groupname) === -1) { 
       vm.contacts.splice(vm.contacts.indexOf(contact), 1); 
      } 
      } 
     }); 
     selectOne(); 
     }; 
ben $ scope.apply (ekleme çalıştı

) ama bu sadece çirkin bir hata

+0

splice on mozilla görüyor musunuz? – Roy

cevap

0

T attı splice() yöntemi, bir diziye öğeler ekler/kaldırır ve , kaldırılan öğeyi döndürür.

filtre işlevi `filterContacts` çalışıyorsa Kontrol ettiniz

function filterContacts(group){ 
     angular.forEach(vm.contacts, function(contact){ 
      if(contact.groups){ 
      if(contact.groups.indexOf(group.groupname) === -1) { 
       // assign the result to itself 
       vm.contacts = vm.contacts.splice(vm.contacts.indexOf(contact), 1); 
      } 
      } 
     }); 
     selectOne(); 
     }; 
+0

Sorun, eşleşmeyen kişilerin vm.contacts dizisinden kaldırılmasını istiyorum - bu da çalışıyor - ancak ng yineleme listesi bazı nedenlerden dolayı güncelleştirilmiyor –

+0

Denetleyici kodunu gönderebilir misiniz? Sanırım diziyi şu şekilde bir $ scope değişkenine atamalısınız: "$ scope.contacts = vm.contacts" ve ilgili html 'ng-repeat =" kişilerdeki kişi "ile eşleme – Max