Javascript Ng重复不使用数组更改更新

Javascript Ng重复不使用数组更改更新,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我有一个使用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.selecte

我有一个使用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)">
这是我的筛选函数,它不会更新ng重复列表(我已检查vm.contacts是否正在更改):

我尝试添加$scope.apply(),但这只是抛出了一个丑陋的错误,该
splice()
方法在数组中添加/删除项,并返回删除的项。


问题是,我希望从vm.contacts数组中删除不匹配的联系人-该数组正在工作-但是由于某些原因,ng重复列表没有更新-您可以发布控制器代码吗?我认为您必须将数组分配给$scope变量,如下所示:
$scope.contacts=vm.contacts
并映射相对html
ng repeat=“contacts in contacts
是否检查筛选函数
filterContacts
是否正在运行?
      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();
        };
      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();
      };
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();
      };