AngularJS过滤器有哪些常见用法及注意事项?

AngularJS基础知识笔记之过滤器

AngularJS过滤器有哪些常见用法及注意事项?

在AngularJS开发中,过滤器是一个核心功能,主要用于对数据进行格式化或转换,使其在视图中以更友好的方式展示,过滤器可以应用于表达式、指令以及自定义模板中,通过管道符()调用,语法简洁且功能强大,本文将详细介绍AngularJS过滤器的使用方法、内置过滤器类型、自定义过滤器的实现以及常见应用场景。

过滤器的基本语法与调用方式

AngularJS过滤器的调用方式非常灵活,主要分为以下几种:

  1. 在模板中直接调用
    最常见的使用场景是在模板中通过表达式结合管道符调用过滤器,格式化日期:

    <p>{{ birthday | date:'yyyy-MM-dd' }}</p>  

    date是过滤器名称,'yyyy-MM-dd'是传递给过滤器的参数。

  2. 在指令中使用
    过滤器也可以与指令结合使用,例如在ng-repeat中对列表数据进行筛选和排序:

    <li ng-repeat="item in items | filter:searchText | orderBy:'name'">  
      {{ item.name }}  
    </li>  

    这里同时使用了filterorderBy两个过滤器,按顺序对数据进行处理。

  3. 在控制器或服务中调用
    通过依赖注入$filter服务,可以在JavaScript代码中手动调用过滤器:

    app.controller('DemoController', function($scope, $filter) {  
      $scope.formattedDate = $filter('date')(new Date(), 'yyyy-MM-dd');  
    });  

内置过滤器详解

AngularJS提供了多种内置过滤器,覆盖了数据处理中的常见需求,以下是常用过滤器的功能及示例:

AngularJS过滤器有哪些常见用法及注意事项?

currency:货币格式化

将数字转换为货币格式,支持指定符号和小数位数。

<p>{{ price | currency:'¥' }}</p>  
<!-- 输出:¥123.45 -->  

date:日期格式化

对日期对象或时间戳进行格式化,支持多种格式化模式。

<p>{{ now | date:'yyyy年MM月dd日 HH:mm:ss' }}</p>  
<!-- 输出:2023年10月01日 14:30:00 -->  

filter:数据筛选

根据条件对数组或对象进行筛选,支持字符串、对象或函数作为筛选条件。

<input ng-model="searchText">  
<li ng-repeat="user in users | filter:searchText">  
  {{ user.name }}  
</li>  

orderBy:排序

对数组进行排序,支持按字段名或自定义排序函数排序。

<li ng-repeat="user in users | orderBy:'age':true">  
  {{ user.name }} - {{ user.age }}  
</li>  
<!-- true表示降序 -->  

lowercaseuppercase:大小写转换

将字符串转换为全小写或全大写。

<p>{{ message | lowercase }}</p>  
<p>{{ message | uppercase }}</p>  

number:数字格式化

对数字进行格式化,可指定小数位数或千位分隔符。

<p>{{ 1234567.891 | number:2 }}</p>  
<!-- 输出:1,234,567.89 -->  

limitTo:截取数组或字符串

限制数组或字符串的长度,支持正数(从头截取)和负数(从尾截取)。

<p>{{ 'Hello' | limitTo:3 }}</p>  
<!-- 输出:Hel -->  

json:JSON格式化

将JavaScript对象转换为JSON字符串,常用于调试。

AngularJS过滤器有哪些常见用法及注意事项?

<pre>{{ user | json }}</pre>  

自定义过滤器

当内置过滤器无法满足需求时,可以自定义过滤器,自定义过滤器通过module.filter()方法注册,本质上是一个函数,接收输入值并返回处理后的结果。

示例:自定义过滤器实现文本截断

app.filter('truncate', function() {  
  return function(input, length) {  
    if (!input) return '';  
    length = length || 10;  
    return input.length > length ? input.substring(0, length) + '...' : input;  
  };  
});  

在模板中使用:

<p>{{ longText | truncate:20 }}</p>  

高级自定义过滤器:带参数的过滤器

自定义过滤器可以接收多个参数,例如实现一个根据状态筛选数据的过滤器:

app.filter('statusFilter', function() {  
  return function(items, status) {  
    if (!status) return items;  
    return items.filter(function(item) {  
      return item.status === status;  
    });  
  };  
});  

模板调用:

<li ng-repeat="item in items | statusFilter:'active'">  
  {{ item.name }}  
</li>  

过滤器的链式调用与性能优化

AngularJS支持多个过滤器链式调用,按从左到右的顺序执行。

<p>{{ data | filter:search | orderBy:'date' | limitTo:5 }}</p>  

性能优化建议

  1. 避免在大型数据集上使用复杂过滤器:过滤器会在每次$digest周期中重新计算,可能影响性能。
  2. 使用track by优化ng-repeat:结合过滤器时,为ng-repeat添加track by可减少DOM操作。
  3. 缓存过滤结果:对于不常变化的数据,可在控制器中预先过滤并存储结果。

过滤器的常见应用场景

  1. 表格数据的实时筛选与排序:通过filterorderBy实现动态数据展示。
  2. 表单数据的格式化:如日期、金额的输入格式化与显示格式化分离。
  3. 多语言支持:结合自定义过滤器实现文本的国际化转换。
  4. 数据脱敏:如手机号、身份证号的隐藏显示。

内置过滤器参数速查表

过滤器名称 功能 示例参数
currency 货币格式化 symbol:'¥', fractionSize:2
date 日期格式化 'yyyy-MM-dd', 'short'
filter 数据筛选 {name:'John'}, 'text'
orderBy 排序 'name', reverse:true
number 数字格式化 2(小数位数)
limitTo 截取 5, -3

过滤器是AngularJS中处理数据展示的重要工具,通过内置过滤器可以快速实现常见的数据格式化需求,而自定义过滤器则提供了灵活的扩展能力,合理使用过滤器,不仅能提升代码的可读性,还能简化数据逻辑的处理,在实际开发中,需注意过滤器的性能影响,避免在频繁变化的数据上使用复杂计算,以确保应用的流畅运行。

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

(0)
上一篇 2025年11月4日 15:44
下一篇 2025年11月4日 15:48

相关推荐

  • 服务器设置默认路由时,网关和目标地址怎么填才正确?

    在计算机网络架构中,服务器作为核心节点,其路由配置的正确性直接关系到数据传输的效率与稳定性,默认路由作为路由表中的“最后防线”,在服务器无法通过特定路由规则确定数据包下一跳地址时,承担着将数据包导向外部网络的关键角色,合理配置默认路由,不仅能简化网络管理,还能提升网络的可用性与扩展性,默认路由的基本概念与作用默……

    2025年11月28日
    03080
  • 如何选择与搭建高效的Git版本控制服务器?

    在软件开发领域,版本控制是保障代码质量、促进团队协作的核心环节,Git作为分布式版本控制系统的代表,凭借其高效协作、灵活分支管理等特性,已成为全球开发者首选工具,仅将Git作为本地客户端使用无法充分发挥其团队协作价值,因此搭建专业的Git版本控制服务器至关重要,本文将系统阐述Git版本控制服务器的核心概念、类型……

    2026年1月14日
    02160
  • 玉溪服务器托管究竟有哪些独特优势?

    在数字经济浪潮席卷全球的今天,服务器作为承载、处理和交换海量数据的“心脏”,其战略地位日益凸显,当我们谈论中国的服务器产业布局时,目光往往聚焦于一线超大城市或国家级数据中心集群,一个名为“玉溪中国服务器”的概念,正以一种非典型却极具代表性的方式,揭示着中国数字基础设施向更广阔地域纵深发展的新趋势,它并非指代某个……

    2025年10月20日
    01780
    • 服务器间歇性无响应是什么原因?如何排查解决?

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

      2026年1月10日
      020
  • 辅助数据故障排除如何高效定位和解决各类辅助数据系统问题?

    在当今信息化时代,数据已成为企业运营的核心资产,随着数据量的激增和复杂性的提高,辅助数据的故障排除变得尤为重要,本文将围绕辅助数据故障排除展开,从故障原因分析、排查步骤以及预防措施等方面进行详细介绍,故障原因分析硬件故障硬件故障是导致辅助数据故障的主要原因之一,如硬盘损坏、内存故障、电源问题等,这些问题可能导致……

    2026年2月1日
    01670

发表回复

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