2014-12-30 3 views
0

Мой код как этотAngularjs фильтр не работает, как ожидалось

$scope.AddressData.Address = [ 
      { 
       "LocationId": 66927, 
       "ClientId": 114, 
       "UserId": 431 
      }, 
      { 
       "LocationId": 66928, 
       "ClientId": 114, 
       "UserId": 431 
      }, 
      { 
       "LocationId": 66929, 
       "ClientId": 114, 
       "UserId": 431 
      }, 
      { 
       "LocationId": 66930, 
       "ClientId": 114, 
       "UserId": 431 
      } 
     ]; 
     var found = $filter('filter')($scope.AddressData.Address, { LocationId: '66927' }, true); 
     console.log(found); 

Все выглядит хорошо для меня, но это всегда возвращает пустой массив. Может ли кто-нибудь указать, что я делаю неправильно?

+1

отлично работает http://jsfiddle.net/LXAt7/146/ - это $ scope.AddressData object? –

+0

должен быть 'Невозможно установить свойство 'Адрес' неопределенного 'исключения, если ваш' AddressData' не инициализирован –

+0

, он сравнивает 'angular.equals', которые выполняют проверку типов и значений объектов. вы сравниваете число с строкой здесь. – elaijuh

ответ

2

Из angular docs on filter, в частности, последний аргумент $filter:

компаратор верно: сокращение для функции (фактическая, как ожидается) {return angular.equals (фактический, ожидаемый)}. Это по существу строгое сравнение ожидаемого и фактического.

Если вы измените фильтр на:

$filter('filter')($scope.AddressData.Address, { LocationId: '66927' }); 

или:

$filter('filter')($scope.AddressData.Address, { LocationId: 66927 }, true); 

Он будет работать, как ожидалось.

+0

Но почему это работает в скрипке с первого комментария? –

+0

Этот комментарий использует угловой 1.0.5, многое изменилось с того момента и 1.3.8. Какую версию ты используешь? – DoctorMick

1

Угловой будет точно проверять тип при использовании фильтра при передаче в режиме истины. Вместо того, чтобы использовать locationId как INT:

var found = $filter('filter')($scope.AddressData.Address, { LocationId: 66927 }, true); 

http://plnkr.co/edit/Q57NSd3BFEcXizwuzRRJ?p=preview

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