2015-04-13 2 views
1

Когда я фильтровать массив объекта с номером что-то вроде:AngularJS фильтр включает в себя отрицательное число

$scope.users = [{name:'John', id:-1}, 
         {name:'Mary', id:1}, 
         {name:'Mike', id:2}, 
         {name:'Adam', id:3}]; 

var selected = $filter('filter')($scope.users, {id: $scope.target}); 

Если цель = 1, то выбранный результат будет включать в себя Джон и Мэри. Но мне нужен только тот же идентификатор, что и Mary с id 1 для включения. Почему он включает отрицательные числа? Как я могу это предотвратить?

ответ

4

Вы можете установить третий параметр фильтра, который является компаратором, чтобы быть правдой

$scope.users = [{name:'John', id:-1}, 
         {name:'Mary', id:1}, 
         {name:'Mike', id:2}, 
         {name:'Adam', id:3}]; 

var selected = $filter('filter')($scope.users, {id: $scope.target}, true); 

true является обобщающим для:

function(actual, expected) { 
    return angular.equals(actual, expected) 
} // This is essentially strict comparison of expected and actual. 

Plunkr.

+0

Это работает! Спасибо огромное! – user3003675

Смежные вопросы