Как отфильтровать массив на основе пользовательского ввода в AngularJS?
AngularJS — это фреймворк на основе JavaScript. Его можно использовать, добавив на HTML-страницу с помощью тега <script>. AngularJS помогает расширять атрибуты HTML с помощью директив и привязки данных к HTML с помощью выражений. В AngularJS можно добавить фильтры Angular для форматирования данных.
В этой статье мы обсудим, как фильтровать массив на основе пользовательского ввода в AngularJS. Фильтрация в angular работает путем ввода буквы в поле ввода, и список будет уменьшаться или увеличиваться в зависимости от совпадающих результатов.
Фильтры в Angular : AngularJS предоставляет пользователям возможность использовать фильтры для преобразования данных, таких как «валюта», которая форматирует число в формат валюты, «дата», которая форматирует дату в указанный формат и т. д. Фильтры в angular могут быть добавлены к выражению или директивы с использованием канала | символ, как показано ниже.
{{ expression | filterName:parameter }}
Чтобы отфильтровать массив данных на основе ввода пользователя, мы используем директиву ng-model , установив ее в поле ввода. После чего мы можем использовать значение поля ввода как выражение в фильтре. Итак, для фильтрации массива нам нужен только массив данных и поле ввода для сбора пользовательского ввода.
Директива ng-model связывает значения элементов управления HTML, таких как ввод, выбор и т. д., и сохраняет требуемое пользовательское значение в переменной, которую можно использовать всякий раз, когда нам требуется это значение. В основном он поддерживается <input>, <select> и <textarea>. Для создания фильтра для поиска массива данных мы будем использовать эту директиву angular.
Синтаксис:
<div ng-app="myApp" ng-controller="namesCtrl"> <p> <input type="text" ng-model="test"> </p> <ul> <li ng-repeat="letter in names | filter : test"> {{ letter }} </li> </ul> </div>
Пример 1. В приведенном ниже примере показано, как фильтровать массив на основе пользовательского ввода в HTML. Когда мы щелкнем в поле ввода и попытаемся ввести любую букву в поле ввода, мы увидим, что список будет уменьшаться, если результаты совпадения набранной буквы совпадут.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "utf-8" /> < title >GeeksforGeeks</ title > < script src = </ script > </ head > < body > < div style = "text-align: center" > < h1 style = "color: green" >GeeksforGeeks</ h1 > < h3 >Filtering an Array in AngularJS</ h3 > </ div > < div > < div ng-app = "gfgApp" ng-controller = "langsCtrl" > < p >Search any word in input field:</ p > < p > < input type = "text" ng-model = "test" /> </ p > < ul > < li ng-repeat = "word in lang | filter:test" > {{ word }} </ li > </ ul > </ div > < script > angular.module("gfgApp", []).controller("langsCtrl", function ($scope) { $scope.lang = ["Java","C++","Python", "Go","C","SQL","JavaScript", ]; }); </ script > </ div > </ body > </ html > |
Выход:
Пример 2. В приведенном ниже примере демонстрируется настраиваемая фильтрация на основе массивов пользовательского ввода в HTML, где список массивов настраивается и фильтруется на основе пользовательского ввода.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "utf-8" /> < title >GeeksforGeeks</ title > < script src = </ script > </ head > < body > < div style = "text-align: center" > < h1 style = "color: green" >GeeksforGeeks</ h1 > < h3 >Filtering an Array in AngularJS</ h3 > </ div > < div > < div ng-app = "gfgApp" ng-controller = "langsCtrl" > < p >Search any word in input field:</ p > < p > < input type = "text" ng-model = "test" /> </ p > < ul > < li ng-repeat = "word in lang | filter:test" style="background-color: lightgreen; width: 5rem; padding: 2px"> {{ word }} </ li > </ ul > </ div > < script > angular.module("gfgApp", []).controller("langsCtrl", function ($scope) { $scope.lang = ["Java","C++","Python","Go", "C","SQL","JavaScript"]; }); </ script > </ div > </ body > </ html > |
Выход: