AngularJS过滤器怎么用?入门教程示例详解

AngularJS 作为一款经典的前端框架,其过滤器(Filter)功能为数据展示提供了便捷的格式化方式,本文将通过基础概念、常用过滤器示例及自定义过滤器编写,带你快速掌握 AngularJS 过滤器的核心用法。

AngularJS过滤器怎么用?入门教程示例详解

过滤器基础概念

过滤器在 AngularJS 中主要用于对数据进行格式化处理,通常在模板中通过管道符()调用,其基本语法为 {{ expression | filterName : parameter1 : parameter2 ... }}expression 为需要处理的数据,filterName 为过滤器名称,parameter 为可选参数,过滤器可串联使用,也可应用于指令(如 ng-repeat)中的数据。

常用过滤器示例

格式化过滤器

  • currency:将数字转换为货币格式。
    示例:{{ 1234.56 | currency : "¥" : 0 }}
    输出:¥1235(参数1为货币符号,参数2为小数位数)

  • date:格式化日期对象。
    示例:{{ dateValue | date : "yyyy-MM-dd HH:mm:ss" }}
    输出:2023-10-01 15:30:00(参数为日期格式模板)

  • number:格式化数字。
    示例:{{ 0.12345 | number : 2 }}
    输出:12(参数为小数位数)

数组/对象过滤器

  • filter:根据条件筛选数组。
    示例:<li ng-repeat="user in users | filter : {age : '>20'}">{{ user.name }}</li>
    作用:筛选 age 大于 20 的用户。

  • orderBy:对数组进行排序。
    示例:<li ng-repeat="user in users | orderBy : '-age'">{{ user.name }}</li>
    作用:按 age 降序排列( 表示降序)。

    AngularJS过滤器怎么用?入门教程示例详解

  • limitTo:截取数组或字符串。
    示例:{{ "Hello Angular" | limitTo : 5 }}
    输出:Hello

字符串处理过滤器

  • uppercase/lowercase:转换大小写。
    示例:{{ "angular" | uppercase }}
    输出:ANGULAR

  • json:将对象转换为 JSON 字符串(便于调试)。
    示例:{{ {name: "Tom", age: 20} | json }}
    输出:{"name":"Tom","age":20}

自定义过滤器

当内置过滤器无法满足需求时,可自定义过滤器,通过模块的 filter 方法注册,语法如下:

angular.module('myApp', [])
  .filter('reverse', function() {
    return function(input) {
      return input.split('').reverse().join('');
    };
  });

模板中使用方式:{{ "hello" | reverse }}
输出:olleh

自定义过滤器支持依赖注入,

AngularJS过滤器怎么用?入门教程示例详解

.filter('greet', function() {
  return function(name) {
    return "Hello, " + name + "!";
  };
});

使用:{{ "World" | greet }}
输出:Hello, World!

过滤器在指令中的综合应用

以下是一个结合 ng-repeat 和多个过滤器的示例,展示用户列表的筛选、排序和格式化:

<div ng-app="userApp" ng-controller="UserCtrl">
  <input type="text" ng-model="searchText" placeholder="搜索用户名">
  <select ng-model="sortOrder">
    <option value="name">按姓名排序</option>
    <option value="-age">按年龄降序</option>
  </select>
  <ul>
    <li ng-repeat="user in users | filter : searchText | orderBy : sortOrder">
      {{ user.name | uppercase }} - {{ user.age | number }}岁 - 加入时间:{{ user.joinDate | date : "yyyy年MM月dd日" }}
    </li>
  </ul>
</div>

对应控制器:

angular.module('userApp', [])
  .controller('UserCtrl', function($scope) {
    $scope.users = [
      {name: "Alice", age: 25, joinDate: new Date("2022-01-15")},
      {name: "Bob", age: 30, joinDate: new Date("2021-05-20")},
      {name: "Carol", age: 28, joinDate: new Date("2022-03-10")}
    ];
  });

注意事项

  1. 性能优化:避免在大量数据(如 ng-repeat)中使用复杂过滤器,可能导致性能问题。
  2. 不可变性:过滤器返回新对象,不会修改原始数据。
  3. 版本差异:AngularJS 1.x 与 Angular(2+)的过滤器语法完全不同,需注意区分。

通过本文的示例,相信你已经掌握了 AngularJS 过滤器的核心用法,合理运用过滤器,能显著提升数据展示的灵活性和代码的可读性,为前端开发带来便利。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/51872.html

(0)
上一篇 2025年11月3日 06:10
下一篇 2025年11月3日 06:12

相关推荐

  • 阜阳未来五天空气质量如何?空气指数API解读与疑问

    阜阳未来五天空气质量展望随着科技的进步,空气质量监测已经成为人们日常生活中不可或缺的一部分,我们将聚焦阜阳地区,为您详细解析未来五天的空气质量状况,通过空气质量指数(API)这一重要指标,我们可以直观地了解阜阳的空气质量状况,今日空气质量概述在分析未来五天的空气质量之前,我们先来回顾一下今天的空气质量,根据最新……

    2026年1月21日
    01980
  • 服务器访问不到存储怎么办?排查步骤有哪些?

    当用户或系统提示无法访问服务器存储时,这通常意味着数据交互链路出现了故障,可能影响业务连续性和数据安全性,这一问题涉及硬件、网络、软件及配置等多个层面,需通过系统排查定位根本原因并采取针对性解决措施,硬件连接与状态检查硬件故障是存储访问异常的常见诱因,首先需确认物理连接是否稳固,例如服务器的SAS线、网线、光纤……

    2025年11月30日
    04800
  • 阜阳域名注册哪家服务好?如何选择合适的域名网址?

    打造网络身份的基石域名网址的重要性在互联网时代,一个简洁、易记的域名网址对于企业和个人来说至关重要,它不仅是网络身份的象征,更是品牌形象的重要组成部分,阜阳域名网址注册,为您搭建起通往互联网世界的桥梁,阜阳域名网址注册的优势简洁易记阜阳域名网址注册提供丰富的域名后缀选择,如.com、.cn、.net等,满足不同……

    2026年1月19日
    02050
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 平流式初沉池进出水设计计算的具体方法与步骤是什么?

    平流式初沉池进出水设计计算初沉池的作用与重要性初沉池是污水处理厂的核心预处理单元,主要功能是去除原水中的悬浮固体(SS),降低后续处理单元(如曝气池、二沉池)的负荷,防止设备堵塞,提升处理系统稳定性,平流式初沉池因结构简单、流态稳定、运行可靠,成为中小型污水处理厂的主流选择,本文聚焦其进出水设计计算,涵盖参数确……

    2025年12月30日
    03500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注