我有一个使用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)">
这是我的删除功能:
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-repeat列表(我已经检查过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 :(得分:0)
splice()
方法在数组中添加/删除项目,返回已删除的项目。
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();
};