实例解析angularjs的filter过滤器

前端之家收集整理的这篇文章主要介绍了实例解析angularjs的filter过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

现在公司用ionic,就是基于angularjs封装了一些api用于webapp,最近用的angularjs的filter确实省了很多代码,现在总结一下!

ng比较鸡肋的过滤器,这里就一笔带过吧!鸡汤类常用的filter后面上例子。

lowercase(小写)

{{ lastName | lowercase }}

uppercase(大写)

{{ lastName | uppercase }}

number(格式化数字)

number过滤器可以为一个数字加上千位分割,像这样,123,456,789。同时接收一个参数,可以指定小float型保留几位小数:

{{ num | number : 2 }}

currency (货币处理)

{{num | currency : '¥'}}

json(格式化json对象)

{{ jsonTest | json}}

作用就和我们熟悉的JSON.stringify()一样

limitTo(限制数组长度或字符串长度)

{{ childrenArray | limitTo : 3 }} //将会显示数组中的前3项

filter(匹配子串)

用来处理一个数组,然后可以过滤出含有某个子串的元素,作为一个子数组来返回。可以是字符串数组,也可以是对象数组。如果是对象数组,可以匹配属性的值。它接收一个参数,用来定义子串的匹配规则。

html

  • filter 匹配子串(以下写法只是方便观察)
  • {{ webArr | filter : 'n' }}
  • {{ webArr | filter : 25 }}
  • {{ webArr | filter : {name : 'l'} }}
  • {{ webArr | filter : fun }}
  • js

    25;};

    效果展示:

    filter 匹配子串(以下写法只是方便观察)

    日期类

    日期过滤器应该是常用过滤器中最简单的吧!

    • yyyy--表示年份;
    • MM--月份(必须大写);
    • dd--日期;
    • hh--时;
    • mm--分(必须小写);
    • ss--秒;
    • EEEE--星期;
    • hh:mm--形式是24小时制;
    • h:mma--12小时制;
    • 其中年、月、日、时、分、秒 或 / : - 等自己试做搭配吧!
  • 8 日期1
  • 8 日期2
  • 8 日期3
  • 8 日期4
  • 日期1的显示效果

    2016/11/19 11:59:05 Saturday

    日期2的显示效果

    2016年11月19日 12:01PM Saturday

    日期3的显示效果

    2016年11月22日 10时42分09秒

    日期4的显示效果

    2016/11/22 11:16:58

    orderBy排序(个人认为第七例最佳写法)

    ng-repeat生成一个独立的scope作用域,直接在ng-repeat循环后加管道orderBy排序。

    用法很简单,但有坑需注意两点:

    • 参数引号勿忘;
    • 参数形式--直接写成age,不用写成item2.age。

    3 按年龄排序(默认升序)

  • 3 按年龄排序(默认升序)
  • name
  • age
    stature

    效果展示:

    4 按年龄排序(加参数true则为倒序即降序)

  • name
  • age
    stature

    效果展示:

    5 想先按年龄升序在按身高降序(全是降序了,达不到效果,见第7例)

    我曾就天真的这样写过^*^

  • name
  • age
    stature

    效果展示:

    效果,见第7例) name zyh age 29 stature 165 name xzl age 27 stature 175 name ljy age 27 stature 165 name nick age 25 stature 170

    6 先按年龄在按身高排序(多个参数写出数组形式)

  • name
  • age
    stature

    效果展示:

    7 先按年龄升序在按身高降序(多个参数写出数组形式)

     在参数前加负号即可实现倒序

  • name
  • age
    stature

    效果展示:

    个人觉得ng内置的过滤器好多都比较鸡肋。个性化的需求自定义的过滤器吧。

    自定义过滤器

    自定义过滤器就是返回一个函数函数又返回你要的值即可!

    实例:

    代码 return result;//返回你要的值 } })

    自定义一个求和的过滤器

    html

  • !!1 求和
  • 用法

    管道前后所有参数即为和

    js

    arguments--函数接受的参数集合,类数组;

    Array.prototype.slice.call(arguments)

    这句将类数组转为数组;

    sum+=arr[i]?arr[i]:0;

    总和sum等于数组的每个元素累加的和。避免后台为传值,而又将次参数传人自定义filer函数作为参数,容错时写成0保险。

    自定义一个求百分百的过滤器(求保留小数点后两位百分比)

    html

    !!2 求百分比
  • male
  • female
  • gay
  • 用法

    分子写在管道前面,管道后面的所有参数和加管道前的参数和则为分母

    js

    这里就是在上面求和的filter上多了一句:

    sum==0?'0%':Math.round((arr[0]?arr[0]:0)/sum*10000)/100+"%"

    Math内置函数,Math.round四舍五入保留整数;

    将总和乘以10000除以100拼接百分比号,即保留两位小数。

    完整代码

    <Meta charset="UTF-8"> ng filter nick
  • !!1 求和
    • !!2 求百分比
    • male
    • female
    • gay
    • 3 按年龄排序(默认升序)
    • name
    age
    stature
    • 4 按年龄排序(加参数true则为倒序即降序)
    • name
    age
    stature
    • 5 想先按年龄升序在按身高降序(全是降序了,达不到效果,见第7例)
    • name
    age
    stature
    • 6 先按年龄在按身高排序(多个参数写出数组形式)
    • name
      age
      stature
    • !!7 先按年龄升序在按身高降序(多个参数写出数组形式)
    • name
      age
      stature
    • 8 日期1
    • 2016/11/19 11:59:05 Saturday
    • 8 日期2
    • 2016年11月19日 12:01PM Saturday
    • 8 日期3
    • 2016年11月22日 10时42分09秒
    • 8 日期4
    • 2016/11/22 11:16:58
    {{100000|currency:'¥'}}
    • filter 匹配子串(以下写法只是方便观察)
    • {{ webArr | filter : 'n' }}
    • {{ webArr | filter : 25 }}
    • {{ webArr | filter : {name : 'l'} }}
    • {{ webArr | filter : fun }}

    以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程之家!

    原文链接:https://www.f2er.com/js/43552.html

    猜你在找的JavaScript相关文章