美文网首页重修前端
angularJS之“过滤器”

angularJS之“过滤器”

作者: adiu | 来源:发表于2016-12-18 16:01 被阅读32次

应用场景


  • 为什么使用?
    过滤器包含了转换逻辑,这些逻辑可被用于向视图中显示程序中的任何数据。
  • 什么时候使用?
    过滤器用于在数据被指令处理并显示到视图中之前将其 格式化转换以某种方式进行排序

两种类型的内置过滤器


  • 对单个数据进行操作
    number过滤器: 调整小数位数,根据需要进行四舍五入,该过滤器会自动在千分位处插入逗号;使用格式 {{ item.num | number: 0 }},0表示零位小数;
    date过滤器: 格式化日期,使用格式 {{ item.data | date: 'yyyy-MM-dd'}}

  • 对数据集合进行操作的
    limitTo过滤器: 展示规定的数据条数;使用格式 <li ng-repeat="item in items | limitTo: 5"></li>,正数从前往后,负数从后入往前;如果指定了一个大于数组大小的值,过滤器将会返回数组中的所有对象;
    orderBy过滤器: 对数组 中的对象进行排序;使用格式 <li ng-repeat="item in items | orderBy: 'price'"></li>;排序字段名称一定要加隐号,如果要倒序排,则只需在字段前面添加 负号 即可

自定义过滤器


  • 单参数过滤器(以百分比显示数据为例)
angular.module('app').filter(percent, function() {
    return function(value) {
        if(value && isNumber.isNumber(value)) {
          return value*100 + '%';
        }
    }
})
  • 带参数过滤器(以文本截断为例)
angular.module('app').filter('ellipsis', function() {
    return function(value, length) {
       if(angular.isString(value) && angular.isNumber(length)) {
         return value.slice(0, length) + '...';
       }
    }
})
  • 集合过滤器(以跳过前几条数据显示之后的数据为例)
angular.module('app').filter('skip', function() {
    return function(data, count) {
        if(angular.isArray(data) && angular.isNumber(count))
        {
            if(count > data.length || count < 1)
            {
                return data;
            }
            else
            {
                return data.slice(count);
            }
        }
        else
        {
            return data;
        }
    }
})

说明:链式调用,这样多个过滤器可以按照顺序对同一数据进行操作。

相关文章

网友评论

    本文标题:angularJS之“过滤器”

    本文链接:https://www.haomeiwen.com/subject/bwbsyttx.html