博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AngularJS1.X学习笔记7-过滤器
阅读量:5311 次
发布时间:2019-06-14

本文共 3006 字,大约阅读时间需要 10 分钟。

  最近参加笔试被虐成狗了,感觉自己的算法太弱了。但是还是先花点事件将这个AngularJS学习完。今天学习filter

一、内置过滤器

  (1)过滤单个数据值

  

    
内置过滤器-过滤单个数据值

今天是:{
{now|date:"dd MMMM yyyy"}}

name cat price expiry json
{
{item.name}}
{
{item.cat | uppercase}}
{
{item.price | currency:"¥"}}
{
{item.expiry | number:0}}
{
{item | json}}

 

 

   上例中用到了常见的内置过滤单个数据值的过滤器,下面一一说明。

  • currency:格式化货币值,可以在后面加:跟参数,指定货币符号,默认为$
  • number:格式化数字,后面跟:加参数,表示保留的小数位数,它会在千分为加上逗号
  • date:参数为日期格式,可以将Date对象或者毫秒数格式化为指定的格式
  • uppercase:字母大写
  • lowercase:字母小写
  • json:将javascript对象转换为json对象

   (2)过滤集合

  • 限制数量   
 

  表示只显示products的前3个项,参数为负数表示从最后一个往前算。

  •  选取项
 

  用filter可以过滤出返回true的项,给个函数也是可以的,例如下面

$scope.selectItems = function(item){     return item.cat == "tt" || item.cat == "yy";       }
  • 排序
 

 

  默认是升序排列,加个-号则降序,当然也可以对多个谓词进行排序,像这个样子

 

  注意那个小小的引号。

二、创建自定义过滤器

  1、单值过滤

  

    
自定义-过滤单个数据值

今天是:{
{now|date:"dd MMMM yyyy"}}

name cat price expiry json
{
{item.name | labelCase:"###"}}
{
{item.cat | uppercase}}
{
{item.price | currency:"¥"}}
{
{item.expiry | number:0}}
{
{item | json}}

  我们用filter方法创建自定义过滤器,filter方法有两个参数,第一个指定过滤器的名称,第二个是一个工厂函数,在工厂函数中返回一个工人函数,工人函数的第一个参数是当前值,其他参数是自定义参数。在本例中定义了一个labelCase过滤器,它的作用是在字符串前面加上自定义的前缀。

  (2)创建一个集合过滤器。

  跟过滤单个值的过滤器差不多,但是它要求传入的是一个数组,返回的还是一个数组

  

.filter("skip",function(){            return function(data,num){                if(angular.isArray(data)&&angular.isNumber(num)){                    if(num>data.length || num<1){                        return data;                    }else{                        return data.slice(num);                    }                }else{                    return data;                }            }        });

 

  这个过滤器表示的是跳过开头的几个数据项不显示。

  (3)站在巨人的肩膀上

    
自定义-过滤单个数据值

今天是:{
{now|date:"dd MMMM yyyy"}}

name cat price expiry json
{
{item.name | labelCase2:"###":"@@@"}}
{
{item.cat | uppercase}}
{
{item.price | currency:"¥"}}
{
{item.expiry | number:0}}
{
{item | json}}

  原来写了一个labelCase,以此为基础写了一个labelCase2, 使之可以同时加上前缀和后缀。由此可见我是巨人(标题是站在巨人的肩膀上)。

  至此,过滤器就学完了。感觉过滤器虽然比较简单,但是作用不小,它可以方便的让同一数据模型有不同的表现形式,非常灵活。

转载于:https://www.cnblogs.com/floor/p/6681742.html

你可能感兴趣的文章
详谈字符编码[二]代码页和一个乱码案例
查看>>
Call C# in powershell
查看>>
spring jdbc.property的配置与使用
查看>>
sql练习
查看>>
hdu 1106 排序
查看>>
Promise 执行时序
查看>>
Web中的积累:外观模式 Facade
查看>>
2014年11月17号------html起始
查看>>
HTML&CSS实验(1)---掌握基本HTML基本元素的使用方法
查看>>
nginx 重写 rewrite 基础
查看>>
201671010439温永琴 实验三作业互评与改进
查看>>
Java笔记第六篇 数据类型初了解(上)
查看>>
00-自测5. Shuffling Machine (20)
查看>>
Python Base Five
查看>>
141. Linked List Cycle
查看>>
JAVA-初步认识-常用对象API(集合框架-Map集合-hashmap存储自定义对象)
查看>>
线程池的堆栈问题
查看>>
浅析C#中的事件
查看>>
static和extern关键字 对函数的作用
查看>>
2012.05.15
查看>>