2016-04-07 25 views
0

ng-repeat(私はコントローラとしてVMを使用しています)、新しい連絡先の追加、現在の連絡先の編集、または連絡先の削除時に更新する連絡先のリストを持っています。私はリストをフィルタリングしようとしないとき。ここでNg-Repeatはアレイ変更で更新されません

<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)"> 

がここに働く私の削除機能ですngのリピートです:

 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(); 
     }; 

はここでNGリピートリストを更新していない私のフィルタリング機能だが(私はvm.contactsであることを確認しました)変更:

 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(); 
     }; 

私は($のscope.applyを追加しようとした)が、それは単に醜いエラー

+0

を確認しましたか? – Roy

答えて

0

Tを投げました彼splice()メソッドは、配列に項目を追加/削除し、は、削除された項目を返します。

は、あなたのフィルタ機能 `filterContacts`が実行されている場合は、splice on mozilla

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

問題は、一致しない連絡先をvm.contacts配列から削除したい - つまり動作していますが、何らかの理由でng-repeatリストが更新されないようにしたいということです。 –

+0

コントローラコードを投稿できますか?私は、$ scope.contacts = vm.contacts'のような$ scope変数に配列を代入し、相対html 'ng-repeat =" contactを連絡先にマッピングする必要があると思います。 – Max

関連する問題