AngularJS 过滤器


AngularJS 是一个当前非常流行的前端框架,它提供了很多有用的特性来简化和加速Web开发。其中之一就是过滤器(Filter)。过滤器是将数据值转换成所需的输出格式的过程,本文将为你详细介绍AngularJS中的过滤器。

一. 基础使用方法

AngularJS 中,使用过滤器的方法非常简单,只需要在需要添加过滤器的文本中加上过滤器名即可。例如,要将一个字符串转化为大写的文本,只需要在该字符串后面加上“| uppercase”就可以了。这里的“|”是AngularJS过滤器的语法标记,它将待过滤的数据传递给过滤器函数。

这里是一个初步的使用示例:

<html ng-app="myApp">
  <head>
    <title>Filter Example</title>
  </head>
  <body ng-controller="myCtrl">
    <p>{{ text | uppercase }}</p>
    <p>{{ date | date }}</p>
  </body>
  <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  <script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
      $scope.text = "Hello World!";
      $scope.date = new Date();
    });
  </script>
</html>

在上面的示例中,我们使用了两个过滤器:“uppercase”和“date”。其中“uppercase”用于将文本转换为大写字母,而“date”用于将日期转换为指定的格式。

这两个过滤器都是AngularJS内置的过滤器,我们可以在AngularJS文档中查看它们的详细描述和用法。

二. 自定义过滤器

如果我们需要使用一种自定义的格式来格式化数据,我们可以使用AngularJS提供的$filter服务来创建自定义过滤器。

下面是一个自定义日期过滤器的示例:

<html ng-app="myApp">
  <head>
    <title>Custom Filter Example</title>
  </head>
  <body ng-controller="myCtrl">
    <p>{{ date | myDate }}</p>
  </body>
  <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  <script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
      $scope.date = new Date();
    });
    app.filter('myDate', function($filter) {
        return function(input) {
            if(input) {
                return $filter('date')(new Date(input), 'yyyy-MM-dd');
            }
            return '';
        }
    });
  </script>
</html>

在上面的例子中,我们定义了一个名为“myDate”的过滤器。该过滤器的函数首先将输入值转换为日期格式,然后使用AngularJS内置的日期过滤器将日期格式化为“年-月-日”的格式。

三. 过滤器链

我们可以使用多个过滤器来对数据进行链式处理。例如,我们可以将一个数字四舍五入到小数点后两位,然后将结果转换为货币表示。

下面是一个过滤器链的示例:

<html ng-app="myApp">
  <head>
    <title>Filter Chain Example</title>
  </head>
  <body ng-controller="myCtrl">
    <p>{{ price | number:2 | currency }}</p>
  </body>
  <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  <script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
      $scope.price = 1234.5678;
    });
  </script>
</html>

在上面的例子中,我们使用了两个过滤器:“number”和“currency”。首先,我们使用“number”过滤器将数字四舍五入到小数点后两位,然后使用“currency”过滤器将结果转换为货币表示。

四. 过滤器参数

有些过滤器可以接受参数,我们可以使用冒号“:”来将参数传递给过滤器。

下面是一个带参数的过滤器的示例:

<html ng-app="myApp">
  <head>
    <title>Filter Chain Example</title>
  </head>
  <body ng-controller="myCtrl">
    <p>{{ price | currency:'USD$' }}</p>
  </body>
  <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  <script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
      $scope.price = 1234.56;
    });
  </script>
</html>

在上面的例子中,我们使用了“currency”过滤器,并将“USD$”作为参数传递给它。这将使过滤器将结果格式化为“$1,234.56”。

总之,AngularJS过滤器是一种非常方便的处理数据的技巧,可以将原始的数据转化为需要的格式,以供我们的前端代码使用。我们可以使用内置的过滤器或者自己定义一个过滤器来处理数据。同时,过滤器还可以链式使用,以及带参数进行使用。这些特性可以大大提高我们Web开发的效率。