AngularJS filter 过滤器

实例

显示包含字母 "A" 的项:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="arrCtrl">
  6. <ul>
  7. <li ng-repeat="x in cars | filter : 'A'">{{x}}</li>
  8. </ul>
  9. </div>
  10. <script>
  11. var app = angular.module('myApp', []);
  12. app.controller('arrCtrl', function($scope) {
  13. $scope.cars = ["Aston Martin", "Audi", "Bentley", "BMW", "Bugatti"];
  14. });
  15. </script>
  16. <p>仅返回与筛选器匹配的项</p>
  17. </body>
  18. </html>

定义与用法

filter filter允许我们筛选一个数组,并返回一个只包含匹配项的数组。

此筛选器只能用于数组。


语法

  1. {{ arrayexpression | filter : expression : comparator }}

参数值

描述
expression从数组中选择项时使用的表达式。该表达式可以是:

String: 将返回与字符串匹配的数组项

Object: 对象是要在数组中搜索的模式,示例: filter: {"name" : "H", "city": "London"} 将返回包含字母 "H" 的数组项,其中城市包含单词 "London" 。请参见下面的示例。

Function: 将为每个数组项调用的函数,函数返回 true 的项将在结果数组中。
comparator可选。定义比较的严格程度。值可以是:

true : 仅当数组项的值正是我们比较的值时,才返回匹配项

false : 如果数组项的值 包含 与之比较的内容,则返回匹配项。此比较不区分大小写。这是默认值

function : 我们可以定义什么是匹配或不匹配的函数

更多实例

实例

将对象用作过滤器:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="arrCtrl">
  6. <ul>
  7. <li ng-repeat="x in customers | filter : {'name' : 'O', 'city' : 'London'}">{{x.name + ", " + x.city}}</li>
  8. </ul>
  9. </div>
  10. <script>
  11. var app = angular.module('myApp', []);
  12. app.controller('arrCtrl', function($scope) {
  13. $scope.customers = [
  14. {"name" : "Alfreds Futterkiste", "city" : "Berlin"},
  15. {"name" : "Around the Horn", "city" : "London"},
  16. {"name" : "B's Beverages", "city" : "London"},
  17. {"name" : "Blido Comidas preparadas", "city" : "Madrid"},
  18. {"name" : "Bon app", "city" : "Marseille"},
  19. {"name" : "Bottom-Dollar Marketse" ,"city" : "Tsawassen"},
  20. {"name" : "Cactus Comidas para llevar", "city" : "Buenos Aires"}
  21. ];
  22. });
  23. </script>
  24. <p>如果名称中有一个 "O" ,并且城市是 "London",则过滤器将给出匹配结果。</p>
  25. </body>
  26. </html>
实例

进行 "严格" 比较,除非值与表达式 完全 相同,否则不会返回匹配:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="arrCtrl">
  6. <ul>
  7. <li ng-repeat="x in customers | filter : 'London' : true">{{x.name + ", " + x.city}}</li>
  8. </ul>
  9. </div>
  10. <script>
  11. var app = angular.module('myApp', []);
  12. app.controller('arrCtrl', function($scope) {
  13. $scope.customers = [
  14. {"name" : "London Food", "city" : "London"},
  15. {"name" : "London Catering", "city" : "London City"},
  16. {"name" : "London Travel", "city" : "Heathrow, London"}
  17. ];
  18. });
  19. </script>
  20. <p>过滤器将为一个或多个对象值为 "London" 的数组项提供匹配项。</p>
  21. </body>
  22. </html>

相关页面

AngularJS 教程: Angular 过滤器

分类导航