angularJS过滤器

    过滤器(filter)正如其名,作用就是接收一个输入(隐式的接收数据源),通过某个规则进行处理,然后返回处理后的结果。主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等。

    ng内置了一些过滤器,它们是:currency(货币)、date(日期)、filter(子串匹配)、json(格式化json对象)、limitTo(限制个数)、lowercase(小写)、uppercase(大写)、number(数字)、orderBy(排序)。总共九种。除此之外还可以自定义过滤器,这个就强大了,可以满足任何要求的数据处理。

    过滤器的使用:过滤器可以使用一个管道字符(|)添加到表达式和指令中。

    具体使用:

   currency(格式化货币单位)

     格式:| currency:[-货币单位(可以自定义,默认是$)] :[-小数指定位数(自动四舍五入),默认是2位小数]  注:本章凡是有[-] ,代表是可选参数

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="">
<!-- 内置过滤器:currency(格式化货币) -->
<p>{{ 12 + 12 + 0.01 | currency}} <!--化为货币,默认单位符号为 '$', 小数默认2位 => $12.00--></p>
<p>{{ 12.45 | currency:'¥'}} <!--将12.45格式化为货币,使用自定义单位符号为 '¥', 小数默认2位--></p>
<p>{{ 12.45 | currency:'CHY¥':3}} <!--将12.45格式化为货币,使用自定义单位符号为 'CHY¥', 小数指定3位, 会执行四舍五入操作 --></p>
<p>{{ 12.55 | currency:undefined:2}} <!--将12.55格式化为货币, 不改变单位符号, 小数部分将四舍五入 --></p>
</body>
</html>

    效果如下:

  date(格式化日期)

    格式:  | date: MM *dd* yyyy * h* mma    注:y  M  d  h  m  s  E 分别表示 年 月 日 时 分 秒 星期

    *号表示随意插入符号(如:-  /  : 年,月,日 等 )你可以自由组合它们。也可以使用不同的个数来限制格式化的位数。我们完全可以根据自己的意愿组合出想要的格式

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="">
<p>{{ '2015-05-20T03:56:16.887Z' | date:"MM/dd/yyyy h:mma"}} <!--使用ISO标准日期格式--></p>
<p>{{ 1432075948123 | date:"MM/dd/yyyy h:mma"}} <!--使用13位(单位:毫秒)时间戳--></p>
<p>{{ 1432075948123 | date:"MM/dd/yyyy h:mma":"UTC"}} <!--指定timezone为UTC --></p>
<p>{{'04/07/2017' | date: 'yyyy年MM月dd日'}}</p>
</body>
</html>

  效果如下:

  

  filter(匹配子串)

    这个名叫filter的filter(不得不说这名字起的,真让人容易混淆—_—!)用来处理一个数组,然后可以过滤出含有某个子串的元素,作为一个子数组来返回。可以是字符串数组,也可以是对象数组。如果是对象数组,可以匹配属性的值。格式:  | filter : fn/string/obj  接收一个参数,用来定义子串的匹配规则。个人感觉有点像模糊匹配的意思。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 filter-->   //匹配属性值含有“m”的
<p>{{ arr | filter : 'm' }}</p>   //匹配属性值含有20的
<p>{{ arr | filter : 20 }}</p>   //参数是对象,匹配name属性中含有 ‘a’的
<p>{{ arr | filter : {name: "a"} }}</p>   //参数是函数,指定返回符合条件的项
<p>{{ arr | filter : fn }}</p> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.arr=[
{name:'tom', age: 18},
{name:'sam', age: 19},
{name:'jack', age: 20},
{name:'hellen', age: 21}
];
$scope.fn=function(e){
return e.age< 21;
}
}])
</script>
</body>
</html>

  效果如下:

  json(格式化json对象)

    格式:  | json     无参数    json过滤器可以把一个js对象格式化为json字符串  作用就和我们熟悉的JSON.stringify()一样。用法超级简单:

    {{ jsonTest | json}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 json-->
<p>{{ oJson | json }}</p> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.oJson=[
{
"name": "jjk",
"age": 18
},
{
"name": "dk",
"age": 19
}
];
$scope.fn=function(e){
return e.age< 21;
}
}])
</script>
</body>
</html>

  效果如下:

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

    limitTo过滤器用来截取数组或字符串,接收一个参数用来指定截取的长度  注:只能从数组或者字符串的开头截取

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 limitTo-->
<p>{{ oJson | limitTo : 1 }}</p> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.oJson=[
{
"name": "jjk",
"age": 18
},
{
"name": "dk",
"age": 19
}
];
$scope.fn=function(e){
return e.age< 21;
}
}])
</script>
</body>
</html>

  效果如下:

  lowercase(小写)

    把数据转化为全部小写。格式 : | lowercase

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 lowercase-->
<p>{{ str |lowercase }}</p> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.str= "Hello, World!" }])
</script>
</body>
</html>

  效果如下:

  

  uppercase(大写)

    把数据转化为全部小写。格式: | uppercase

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 uppercase-->
<p>{{ str |uppercase }}</p> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.str= "Hello, World!" }])
</script>
</body>
</html>

  效果如下:

  

  number(格式化数字)

    格式化数字 为一个数字加上千位分割, 同时接收一个参数,指定保留几位小数  格式: | number :[-num]

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="">
{{ "3456789" | number}} <br />
{{ 12345678 | number:3}}
</body>
</html>

  效果如下:

  

  orderBy(排序)

    将一个数组中的元素进行排序,接收一个参数来指定排序规则,参数可以是一个字符串,表示以该属性名称进行排序。可以是一个函数,定义排序属性。还可以是一个数组,表示依次按数组中的属性值进行排序(若按第一项比较的值相等,再按第二项比较)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular-ui/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myContrl">
<!-- 内置过滤器 orderBy-->   //按照age属性值排序
<div>{{ arr | orderBy : "age"}}</div>   //按照函数的返回值排序
<div>{{ arr | orderBy : fn}}</div>    //如果age相同,则按name排序
<div>{{ arr | orderBy : ["age","name"]}}</div> <script>
var myApp = angular.module('myApp',[]);
myApp.controller('myContrl', ["$scope",function($scope){
$scope.arr=[
{name:'tom', age: 18},
{name:'sam', age: 19},
{name:'jack', age: 20},
{name:'hellen', age: 20}
];
$scope.fn=function(e){
return e.name;
}
}])
</script>
</body>
</html>

  效果如下:

  内置的过滤器就介绍到这里了

  现在来讲讲自定义的过滤器 :filter的自定义方式很简单,使用module的filter方法,返回一个函数,该函数接收输入值,并返回处理后的结果。

  形式: var app=angular.module("myapp", []).filter("过滤器名称",  function(){ return function(){....} },返回的函数接受2个参数:参数1--表达式的值,参数2--可选

  demo如下:

    

myAppModule.filter("reverse",function(){
return function(input,uppercase){
var out = "";
for(var i=0 ; i<input.length; i++){
out = input.charAt(i)+out;
}
if(uppercase){
out = out.toUpperCase();
}
return out;
}
});

  

 name | reverse    input就是代表name的值。

具体实例如下:

  
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>name:{{name}}</div>
<div>reverse:{{name | reverse}}</div>
<script>
var myApp = angular.module("myApp", []);
myApp.controller("myCtrl",["$scope",function($scope){
$scope.name = "tom";
}]); myApp.filter("reverse", function(){
return function(input){
for(var i=0;i<input.length;i++){
var str=input.charAt(i)
}
return str;
}
})
</script> </body>
</html>

  chrome显示如下:

ok,过滤器简单的总结已经差不多了,细节问题以后会慢慢补充!

angularJS----filter的更多相关文章

  1. AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label

    1.  filter可以接收参数,参数用 : 进行分割,如下: {{ expression | filter:argument1:argument2:... }} 2.   filter参数是 对象 ...

  2. angularjs filter 详解

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这 ...

  3. AngularJS Filter用法详解【转+实际测试】 格式化货币

    AngularJS内建了一些常用的Filter,我们一一来看一下. currencyFilter(currency): 用途:格式化货币 方法原型: function(amount, currency ...

  4. 转载 angularJS filter 过滤器

    angularjs中的filter(过滤器) 标签: angularjsfilter   源文地址:http://www.ncloud.hk/技术分享/angularjs中的filter-过滤器/ f ...

  5. AngularJs filter 过滤器

    Filter Ng里的过滤器. currency:把一个数字格式化成货币模式(如$1,234.56).当没有提供任何货币符号时,默认使用当前区域的符号. 使用: HTML:{{ currency_ex ...

  6. Part 12 Angularjs filter by multiple properties

    In the example below, we are using multiple search textboxes. As you type in the "Search name&q ...

  7. angularjs filter cut string

    angular.module('App.controllers.MyCtrl', []) .controller('MyCtrl', function (my) {}) .filter('cut', ...

  8. AngularJs filter 过滤器基础【转】

    Filter Ng里的过滤器. currency:把一个数字格式化成货币模式(如$1,234.56).当没有提供任何货币符号时,默认使用当前区域的符号. 使用: HTML:{{ currency_ex ...

  9. angularjs filter详解

    过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果. 主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等. ng内置了一些过滤器, ...

  10. AngularJS的Filter用法详解

    上一篇讲了自定义Directive,本篇是要讲到AngularJS的Filter. Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式 ...

随机推荐

  1. PKU 3041 Asteroids 最小点覆盖(最大匹配模板题)

    题目大意:给你一个N*N的矩阵, 里面有K个星球, 我们可以让武器攻击矩阵的一行或者一列来使得这个星球被击碎, 现在问你最少需要几个这种武器才能把所有的星球击碎? 解题思路:关键是建模构图 把每一行当 ...

  2. kubernetes rabbitmq 集群安装配置

    生成secret来保存relang-cookie: secret.yml文件: apiVersion: v1kind: Secretmetadata: name: rabbit-cookietype: ...

  3. Discuz! 论坛

      Discuz! 是腾讯旗下 Comsenz 公司推出的以社区为基础的专业建站平台,帮助网站实现一站式服务.让论坛(BBS).个人空间(SNS).门户(Portal).群组(Group).应用开放平 ...

  4. 一次http请求中的信息

    什么是Http 一次http传输,是由请求报文和响应报文来完成的 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World W ...

  5. ionic 打包

    比如我下载一个官方的小Demoionic start myApp tabs(我默认你已经配置好了安卓的开发环境.安装了全局的ionic.cordova)   首先,你需要给项目添加安卓平台的支持ion ...

  6. -webkit-box

    父容器 display: flex; justify-content: center;/*主轴*/ align-items: center; /*交叉轴*/ display: -webkit-box; ...

  7. Java程序运行在Docker等容器环境有哪些新问题

    基本回答 一.  对于Java来说,Docker毕竟是一个较新的环境,其内存.CPU等资源限制是通过ControlGroup实现的.早期的JDK版本并不能识别这些限制,进而会导致一些基础问题. 1.如 ...

  8. IDEA 编译报错: 未结束的字符串文字

    最近在搞新项目,同事用的eclipse开发,而我用的是ide,项目初始是由同事创建的,项目编码是UTF-8,而我开发的ide工具默认是GBK编码,导致在编译的时候报错: 未结束的字符串文字 这个问题就 ...

  9. C++、Java、JavaScript中的正则表达式

    C++(VS2013编译器):http://msdn.microsoft.com/zh-cn/library/bb982727.aspx#grammarsummary Java:            ...

  10. mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()

    1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一 ...