第3章AngularJS的过滤器和作用域 本章学习目标 ●掌握模板中各类过滤器的定义和使用方法; ●理解AngularJS中作用域基础和层级的概念; ●掌握作用域在事件中传播的应用方式。 3.1模板中的过滤器 过滤器的主要功能是格式化数据,这里所说的数据,既包括视图模板中的表达式,也包括控制器中的数组或对象。开发人员不仅可以方便地调用AngularJS中提供的过滤器,还可以自定义属于自己的过滤器。下面通过一个个实用的案例,介绍过滤器的强大功能。 3.1.1排序方式过滤 在介绍排序(orderBy)过滤器之前,先来了解一下过滤器的使用格式。在AngularJS中,过滤器有三种调用方式,分别为单个过滤器、多个过滤器和带参数的过滤器。它们分别对应不同的使用格式,下面分别进行介绍。 1. 单个过滤器 单个过滤器常用于视图模板的表达中,它的使用格式非常简单,调用格式如下所示。 {{表达式 | 过滤器名}} 在上述代码中,“{{}}”双大括号为表达式标记,在括号中,“|”为管道符,通过该符号分成前后两部分,前部分为需要被格式化的表达式,后部分为过滤器的名称,示例代码如下。 {{8.88 |currency}} 代码执行后的结果为$8.88,即在表达式前添加了一个“$”符号。在上述代码中,数值8.88为表达式,而currency则为货币过滤器。 2. 多个过滤器 在视图模板的表达式中,除使用单个过滤器之外,还可以同时调用多个过滤器,格式如下。 {{表达式 | 过滤器名1 | 过滤器名2 | ...}} 在上述代码中,多个过滤器名使用管道符“|”隔开,其他内容与单个过滤器的使用相同。 3. 带参数的过滤器 当然,无论是单个过滤器还是多个过滤器,它们都可以在调用时带参数,调用格式如下。 {{表达式 | 过滤器名1 : 参数1 : 参数2 :...}} 在上述代码中,过滤器的参数跟随在过滤器名称的后面,通过“:”来进行识别,多个参数之间使用“:”进行隔开,多个过滤器同样可以带多个参数,各自用“:”分开,示例代码如下。 {{8.8800 | number:1}} 代码执行后的结果为8.9,虽然表达式值中有4位小数,但由于number过滤器中小数位的参数值为1,因此,在显示时只能保留一位。在保留时,按四舍五入的方式进行取舍,最终数值8.8800经过过滤器格式化后变成8.9。 在介绍完过滤器的多个调用格式之后,接下来详细说明排序过滤器的用法。该过滤器的功能是按照指定的一个或多个对象属性名称进行数据过滤。通过排序过滤器,不仅可以获取按照指定属性名称排序后的数据,还能通过过滤器设置数据返回时的记录总数量。 接下来通过一个完整的示例演示排序过滤器使用的过程。 示例31排序(orderBy)方式过滤 (1) 功能说明。 在页面的视图模板中,调用排序过滤器,将显示的数据按score属性值降序进行排列,并且只显示前3条数据记录。 (2) 实现代码。 在WebStorm开发工具中,新建一个HTML文件31.html,加入如代码清单31所示的代码。 代码清单31排序(orderBy)方式过滤