Instead or relaying on the $index
– which – as you have noticed – will point to the index in a sorted / filtered array, you can pass the item itself to your removeItem
function:
<a><img src="https://stackoverflow.com/questions/16118762/img/delete.png" ng-click="removeItem(item)">{{$index}}</a>
and modify the removeItem
function to find an index using the indexOf
method of an array as follows:
$scope.removeItem = function(item){
$scope.items.splice($scope.items.indexOf(item),1);
}