Ng重复不随数组变化而更新

Ng-Repeat Not Updating With Array Change

本文关键字:变化 更新 数组 Ng      更新时间:2024-03-18

我有一个使用ng repeat的联系人列表(我使用我的控制器作为vm),当我添加新联系人、编辑当前联系人或删除联系人时,它会更新,但当我尝试过滤列表时不会更新。这是ng重复

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

以下是我的删除功能:

      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(),但这只是抛出了一个丑陋的错误

splice()方法向数组添加项/从数组中删除项,返回删除的项

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