Angular JS 中的内置方法之filter
通过过滤器可以实现很多数据格式化的功能
常用方法形如{{ data | uppercase}} 或者是{{ 123.456 | number:2 }}
也可以通过在控制器中注入$filter来实现功能
angular.module('MyApp',[])
.controller('FilterController',function($scope,$filter){
$scope.data = $filter('uppercase')('ard');
});
1.currency 货币单位
2.date 日期格式化
2.1.日期的格式化
2.2.年份的格式化
2.3.月份格式化
2.4.日期格式化
2.5.小时格式化
{{ today | date:'HH' }} 24小时制数字小时:
{{ today | date:'H' }} 一天中的第几个小时:
{{ today | date:'hh' }} 12小时制数字小时:
{{ today | date:'h' }} 上午或下午的第几个小时:
2.6.分钟格式化
{{ today | date:'mm' }} 09
{{ today | date:'m' }} 9
2.7.秒数格式化
{{ today | date:'ss' }} 02
{{ today | date:'s' }} 2
{{ today | date:'.sss' }} .995
2.8.字符格式化
{{ today | date:'a' }} AM
{{ today | date:'Z' }} 0800 时区标识
2.8.自定义的组合格式化
{{ today | date:'MMMd, y' }} Aug9, 2013
{{ today | date:'EEEE, d, M' }} Thursday, 9, 8
{{ today | date:'hh:mm:ss.sss' }} 12:09:02.995
3.从数组中筛选符合条件的结果
3.1.数组中对象为简单对象(纯数字或字符串)
3.1.1.过滤条件为简单字符串 {{ data | filter:'abc' }}
只要存在filter中过滤条件的字符串都能被返回
$scope.data = ['abc','abcde','hahaha']
输出的结果为 ['abc','abcde']
如果想要排除某种字符串 则使用 {{ data | filter:'!abc'}}
3.2.数组中对象为复杂对象
3.2.1.过滤条件为简单字符串 {{ data | filter:'abc' }}
只有某个对象的的键值对中的值符合条件才会被输出。
3.2.2.过滤条件为对象 {{ data | filter:{'name':'alex'} }}
只有对象中包含该键,且键的值等于过滤条件的才会被输出。
如果不需要指定data中是哪个键的属性中包含指定的属性,那么可以用
{{ data | filter:{'$':'alex'} }} 这种写法,此时就是类似将对象转为字符串,如果值中包含指定的字符串,则输出该对象,类似与上面直接用一个字符串作为条件来过滤。
3.3.自定义函数实现过滤逻辑校验
3.3.1.{{ data | filter:isCapitalized }}
通过自定义函数isCapitalized 中需要过滤的数据进行逐个筛选,如果满足条件,函数返回true
var app = angular.module('myApp',[]);
app.controller('MyCtrl',function($scope){
$scope.data = [{'name':'alex','age':'18'},{'name':'peter','age':'19'},{'name':'keke','gender':'woman'}];
$scope.dataTwo = ['Alex','peter','json'];
$scope.isCapitalized = function(obj){
return obj.name == 'alex';
}
});
3.3.2.自定义filter(可以看作上面自定义函数的另一种写法)
var app = angular.module('myApp',[]);
app.filter('myReverse',function(){
return function(text){
return text.split("").reverse().join("");
}
})
3.4.使用filter时候的第二个参数
3.4.1.TRUE {{ data | filter:'xxx':true}}
此时的过滤条件为全等,只有data中的数据与过滤条件完全一致(大小写,类型等),才能被输出。
3.4.2.FALSE {{ data | filter:'xxx':false}}
此时的过滤条件为非全等,只有data中的数据与过滤条件字面值一致(忽略大小写,类型等),就能被输出。
3.4.3.JSON {{ data | filter:'xxx':json}}
此时会将结果以json的格式输出
3.5.limitTo {{ data | limitTo:n }}
n为正值,从前往后截取。n为负值,从后往前截取。
若data为简单对象,返回的也是同种类型对象。
若data为对象数组,返回的也是数组。
若n大于data的长度,返回整个对象。
3.6.uppercase {{ data | uppercase }}
将字符串转为大写
3.7.lowercase {{ data | lowercase }}
将字符串转为小写
3.8.number {{ data | number:x}}
将数字添加千分符,默认x=3,即保留小数点后三位,进行四舍五入。
3.9. orderBy {{ data | orderBy:fun:true}} (fun为必填,第二个参数默认false)
3.9.1.fun为函数
此时需要自定义一个函数来实现入参的处理
若定义函数为
$scope.sortSimpleType(op){
3.9.2.fun为字符
如果是字符串,假如待排序的数组为对象,那么将会按照待排序数组中的每个对象的对应属性值,进行排序。如果字符串前边加有“+”,“-”符号,那么+表示升序排序,-表示降序排序。如果字符串为空,那么将按照元素自身进行排序。
对于元素是对象的数组按照某一个属性来排序,此时只需要指定字符为属性名就行,相比于上面需要自定义一个函数更便捷。
{{[{'name':'nick','age':'34'},{'name':'bob','age':'23'}]] | orderBy: 'name'}}
输出结果
3.9.3.fun为数组
如果是array,那么是第二种情况的一种多属性排序方式 。比如参数为[a,b],那么将先按照a属性值进行排序,如果a属性值相同,那么将按照b属性值进行排序。
{{[{'name':'nick','age':34},{'name':'nick','age':23},{'name':'bob','age':23}]] | orderBy:[ 'name','age']}}
输出结果
[{"name":"bob","age":23},{"name":"nick","age":23},{"name":"nick","age":34}]
Angular JS 中的内置方法之filter的更多相关文章
- Angular JS 中的内置方法之$watch
在$apply方法中存在脏检查,首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法. $watch(watchFn,watc ...
- Angular JS 中的内置方法之表单验证
angular js 结合html5 可以实现强大的表单验证功能 关闭html5自带的表单验证功能可以用
- js中数组内置方法
var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4 indexOf() 搜索一个指定的元素的位置 arr.indexOf('C');// ...
- js中的内置方法的兼容写法
1.如果浏览器不支持every属性,every的实现原理 if(Array.prototype.every===undefined){ Array.prototype.every=function(f ...
- JS中的内置对象简介与简单的属性方法
JS中的数组: 1.数组的概念: 数组是在内存中连续存储的多个有序元素的结构,元素的顺序称为下标,通过下标查找对应元素 2.数组的声明: ①通过字面量声明var arr1 = [,,,,] JS中同一 ...
- Angular JS 中的服务注册方法
在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的 ...
- Python中class内置方法__init__与__new__作用与区别探究
背景 最近尝试了解Django中ORM实现的原理,发现其用到了metaclass(元类)这一技术,进一步又涉及到Python class中有两个特殊内置方法__init__与__new__,决定先尝试 ...
- python中字符串内置方法
字符串类型 作用:定义姓名.性别等 定义方式: s='lzs' #\n换行 \t缩进4个空格 \r回退上一个打印结果,覆盖上一个打印结果 加上一个\让后面的\变得无意义 内置方法: (优先掌握) 1. ...
- js中的内置对象(还没怎么看)
在js里,一切皆为或者皆可以被用作对象.可通过new一个对象或者直接以字面量形式创建变量(如var i="aaa"),所有变量都有对象的性质.注意:通过字面量创建的对象在 ...
随机推荐
- SpringBoot从入门到精通十一(SpringBoot文件上传的两种方法)
前言 在企业级项目开发过程中,上传文件是最常用到的功能.SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入. 本章目标 使用SpringBoot项目完成单 ...
- Django框架之前端渲染-模板层
Django 模板层 Django 模板层 前后端数据传递 (1) 后端朝前端页面传递数据的方式: # 将当前所在的名称空间中的名字全部传递给前端页面 # 第一种 return render( ...
- 每周分享五个 PyCharm 使用技巧(五)
文章首发于 微信公众号:Python编程时光 大家好,这是本系列 PyCharm 的高效使用技巧的第五篇.按照惯例,本次还是分享 5 个. 本系列前四篇如下,若还没看的,你可以点击查阅 21. 随处折 ...
- kubernetes实战篇之创建一个只读权限的用户
系列目录 上一节我们讲解到了如何限制用户访问dashboard的权限,这节我们讲解一个案例:如何创建一个只读权限的用户. 虽然可以根据实际情况灵活创建各种权限用户,但是实际生产环境中往往只需要两个就行 ...
- 系统学习 Java IO (八)----装饰流 FilterInputStream/FilterOutputStream
目录:系统学习 Java IO---- 目录,概览 这两个流的作用是:"封装其它的输入流,并为它们提供额外的功能" 他们的直接子类有: BufferedInputStream 的作 ...
- 【设计模式】结构型02装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern) 意图:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰器模式相比生成子类更为灵活. 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由 ...
- php实现redis锁机制
<?php class Redis_lock { public static function getRedis() { $redis = new redis(); $redis->con ...
- Programming In Lua 第一章
1,Lua可以嵌入其他应用程序(如CGILua或IUPLua). 2,lua代码的语句,分号是可以省略的.同一行可以有多条lua语句,最好用分号隔开(当然也可以不隔开) 3,外壳与lua解释器的区别. ...
- wireshark数据包分析实战 第一章
1,数据包分析工具:tcpdump.wireshark.前者是命令行的,后者是图形界面的. 分析过程:收集数据.转换数据(二进制数据转换为可读形式).分析数据.tcpdump不提供分析数据,只将最原始 ...
- 学习体验centos7 下根目录扩容操作(步骤详细!!!)
转自 苗尼玛乔 感谢你!