точный фильтр в угловом

В Angular, есть ли способ изменить фильтр таким образом, чтобы он возвращал только точные совпадения?

Пример:

var words = [ { title: "ball" }, { title: "wall" }, { title: "all" }, { title: "alloy" } ]; var wordsFiltered = filter('filter') ( words, { 'title': 'all' } ); 

Вышеупомянутое будет соответствовать «шарикам», «стенам», «всем» и «сплавам». Но я бы хотел, чтобы он соответствовал только «всем». Любой способ изменить его?

ОБНОВИТЬ

Начиная с AngularJS v.1.1.3 точная фильтрация обеспечивается изначально :

 Find words that exactly match title:  
and exactly match type:
{{word.title}}

Plunker


Ваш вопрос подразумевает, что вы хотите сопоставлять несколько свойств объекта, поэтому вот фильтр, который делает это:

 app.controller('AppController', [ '$scope', function($scope) { $scope.match = {}; $scope.words = [ { title: "ball", type: 'object' }, { title: "wall", type: 'object' }, { title: "all", type: 'word' }, { title: "alloy", type: 'material' } ]; } ] ); app.filter('exact', function(){ return function(items, match){ var matching = [], matches, falsely = true; // Return the items unchanged if all filtering attributes are falsy angular.forEach(match, function(value, key){ falsely = falsely && !value; }); if(falsely){ return items; } angular.forEach(items, function(item){ // eg { title: "ball" } matches = true; angular.forEach(match, function(value, key){ // eg 'all', 'title' if(!!value){ // do not compare if value is empty matches = matches && (item[key] === value); } }); if(matches){ matching.push(item); } }); return matching; } }); 
  Find words that exactly match title:  
and exactly match type:
{{word.title}}

PLUNKER

Попробуй это :

 var words = [ { title: "ball" }, { title: "wall" }, { title: "all" }, { title: "alloy" } ]; var wordsFiltered = filter('filter') ( words, { 'title': 'all' }, true ); 

Вы можете использовать Regex для достижения простой реализации:

   

В controllerе:

 $scope.myFilter = function (word) { if ($scope.query === '') return true; var reg = RegExp("^" + $scope.query + "$"); return reg.test(word.title); }; 

Я бы создал новый фильтр. Это то, что вы хотите?

HTML

 
{{words | exactMatch:'all'}} !

JavaScript

 var myApp = angular.module('myApp',[]); myApp.filter('exactMatch', function() { return function(words, pattern) { var result = []; words.forEach(function (word) { if (word.title === pattern) { result.push(word); } }); return result; } }); function MyCtrl($scope) { $scope.words = [ {title: "ball", other: 1}, {title: "wall", other: 2}, {title: "all", other: 3}, {title: "alloy", other: 4}, {title: "all", other: 5}, ]; } 

JsFiddle: jsfiddle
Дополнительная информация о пользовательских фильтрах: фильтры , создание настраиваемых фильтров и использование фильтров

Если вы хотите использовать фильтр в Javascript вместо html, вы должны посмотреть здесь: jsfiddle

Я создал свой собственный фильтр.

   app.filter('exactMatch', function() { return function(elements, pattern) { var result = []; var fieldSearch = Object.keys(pattern)[0]; elements.forEach(function (element) { if (element[fieldSearch] == pattern[fieldSearch]) { result.push(element); } }); return result; } }); 

угловой фильтр – полезная библиотека фильтров.

Один из их фильтров – это фильтр, который выполняет точное совпадение.

  • Как исключить определенные сообщения по имени TAG с помощью Android adb logcat?
  • Запуск пользовательского приложения Android из браузера Android / Chrome
  • Добавить признанное изображение в элементы wp_nav_menu
  • Как динамически обновлять ListView на Android
  • Фильтрация DataGridView без изменения источника данных
  • Как использовать фильтр объектов с поддержкой softlayer api?
  • Отчеты фильтрации jqGrid
  • Как фильтровать возвращаемые данные из jQuery.ajax ()?
  • Высокочастотная фильтрация в MATLAB
  • Как использовать AutoCompleteTextView и заполнять его данными из веб-API?
  • Java8: сумма значений из определенного поля объектов в списке
  • Давайте будем гением компьютера.