老是忘记 Angularjs 的一些语法和有哪些内置 filter,写个备忘,我这边用 ng 框架做开发的项目还真是不多,只能自己找点小项目练练手了,一段时间不做就立马生疏啊。
在模板中使用 filter
最简单的,用管道符 “|”:
多个 fitler 连用:
filter 带参数,用“:”分隔:
在 js 代码中使用 filter
要在 controller 或者 service 中使用 filter,最简单的用法,就是直接注入:
要使用多个filter的话,就注入“filter之父”——$filter
Angularjs 内置 filter 列表:
1. currency
将数字格式化为货币,默认是美元符号,你可以自己传入自定义符号,语法如下:
当然,你也可以在 js 中使用该 filter:
2. number
该 filter 可以将数字用千分位格式化一下,并且可以指定保留的小数位数:
js 中用法:
3. date
这个 filter 对 date 可以提供比较丰富的格式化处理,先看语法。
html template:
javascript:
关键在于这个 format,官网中有详尽的描述,我就复制、黏贴吧:
'yyyy'
: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)'yy'
: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)'y'
: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)'MMMM'
: Month in year (January-December)'MMM'
: Month in year (Jan-Dec)'MM'
: Month in year, padded (01-12)'M'
: Month in year (1-12)'dd'
: Day in month, padded (01-31)'d'
: Day in month (1-31)'EEEE'
: Day in Week,(Sunday-Saturday)'EEE'
: Day in Week, (Sun-Sat)'HH'
: Hour in day, padded (00-23)'H'
: Hour in day (0-23)'hh'
: Hour in AM/PM, padded (01-12)'h'
: Hour in AM/PM, (1-12)'mm'
: Minute in hour, padded (00-59)'m'
: Minute in hour (0-59)'ss'
: Second in minute, padded (00-59)'s'
: Second in minute (0-59)'sss'
: Millisecond in second, padded (000-999)'a'
: AM/PM marker'Z'
: 4 digit (+sign) representation of the timezone offset (-1200-+1200)'ww'
: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year'w'
: Week of year (0-53). Week 1 is the week with the first Thursday of the year'G'
,'GG'
,'GGG'
: The abbreviated form of the era string (e.g. ‘AD’)'GGGG'
: The long form of the era string (e.g. ‘Anno Domini’)
为方便使用,angularjs 还预设了一些格式,你也可以用预设的别名:
'medium'
: equivalent to'MMM d, y h:mm:ss a'
for en_US locale (e.g. Sep 3, 2010 12:05:08 PM)'short'
: equivalent to'M/d/yy h:mm a'
for en_US locale (e.g. 9/3/10 12:05 PM)'fullDate'
: equivalent to'EEEE, MMMM d, y'
for en_US locale (e.g. Friday, September 3, 2010)'longDate'
: equivalent to'MMMM d, y'
for en_US locale (e.g. September 3, 2010)'mediumDate'
: equivalent to'MMM d, y'
for en_US locale (e.g. Sep 3, 2010)'shortDate'
: equivalent to'M/d/yy'
for en_US locale (e.g. 9/3/10)'mediumTime'
: equivalent to'h:mm:ss a'
for en_US locale (e.g. 12:05:08 PM)'shortTime'
: equivalent to'h:mm a'
for en_US locale (e.g. 12:05 PM)
4. lowercase / uppercase
这是两个鸡肋 filter,望文生义,将给定的字符串转换成小写/大写的样式,当然了,对中文无效(废话!)
javascript:
5. limitTo
用来截取数组或字符串,接收一个参数用来指定截取的长度,如果参数是负值,则从数组尾部开始截取,还可以指定一个起始参数,通常情况下,默认为0:
javascript:
6. orderBy
可以将一个数组中的元素进行排序,接收一个参数来指定排序规则,参数可以是一个字符串,表示以该属性名称进行排序。可以是一个函数,定义排序属性。还可以是一个数组,表示依次按数组中的属性值进行排序(若按第一项比较的值相等,再按第二项比较),可以在要排序的字段前加上“-”来进行降序排列。第二个reverse参数是一个布尔值,同样可以利用它来升序或者降序:
javascript:
7. json
这个 filter 可以把一个 js object 格式化成 json 对象,这个……有啥用?其实真没啥用,但在调试的时候,用处还是蛮大的哦!可以用它来把从 API 里吐出来的数据简单的显示到页面上,检查一下数据的格式或者值是否是预期的。spacing 参数可以让你控制缩进范围:
javascript:
8. filter
这是一个叫 filter 的 filter…… 这名字起得,太 TM 有水平了,哈哈…… 就是用来处理一个数组,然后可以过滤出含有某个子串的元素,作为一个子数组来返回。可以是字符串数组,也可以是对象数组。如果是对象数组,可以匹配属性的值。它接收一个参数,用来定义子串的匹配规则,还可以跟一个比较器参数,来进一步自定义过滤规则:
javascript:
自定义 filter
filter 的自定义方式也很简单,使用 module 的 filter 方法,返回一个函数,该函数接收输入值,并返回处理后的结果。话不多说,我们来写一个看看。比如我需要一个过滤器,它可以返回一个数组中下标为偶数的元素,代码如下: