详解Angular的内置过滤器和自定义过滤器【推荐】


Posted in Javascript onDecember 26, 2016

在实际的开发过程中,很多後端返回给我们的数据都是需要格式化处理的,在angular中为我们内置提供了filter指令,可以很方便的对数据进行处理。首先我们看看在视图中是如何使用过滤器的。

1、currency(货币)格式化

<div ng-controller="Aaa">
 <p>{{name | currency:'¥'}}</p>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = '12334.273489274834';
 }]);
</script>

在name的数据後面使用|符号表示启用过滤器,如果对linux比较熟悉的话,这块的|根linux的管道功能。currency可以理解成函数,而'¥'则是函数的参数,如果不传默认为$符号!

2、number(数字)格式化

<div ng-controller="Aaa">
 <p>{{name | number:2}}</p>
</div>
<script type="text/javascript">
 $scope.name = '12334.273489274834';
</script>

用来精确浮点数(精确到2位)默认是3位。

3、uppercase , lowercase(大小写)格式化

<div ng-controller="Aaa">
 <p>{{name | uppercase}}</p>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = 'hello';
 }]);
</script>

uppercase转换成大写,lowercase转换成小写

4、json(数据)格式化

<div ng-controller="Aaa">
 <pre>{{name | json}}</pre>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = { name : 'xcg',age : 19 };
 }]);
</script>

以json的格式输出到页面中,视图只能使用pre标签才可以识别

5、limitTo(截取)格式化

<div ng-controller="Aaa">
 <p>{{name | limitTo : 3}}</p>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = '123456789';
 }]);
</script>

截取字符串,数字不行。。。

6、limitTo(截取)格式化

<div ng-controller="Aaa">
 <p>{{name | date : 'yyyy-MM-dd hh:mm:ss'}}</p>
<p>{{name | date : 'MM/dd/yyyy @ h:mma'}}</p>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = 1448022616463;
 }]);
</script>

7、orderBy(排序)格式化

<div ng-controller="Aaa">
 <pre>{{name | orderBy : 'age' : true | json}}</pre>
<div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = [
   {color : 'red',age : '10'},
   {color : 'yellow',age : '20'},
   {color : 'blue',age : '30'},
   {color : 'green',age : '40'}
  ];
 }]);
</script>

如果排序的值是字母,就按照字母的顺序来排序。如果是数字,从大到小。传入true则为逆向排序。

8、filter(筛选&过滤)格式化

<div ng-controller="Aaa">
 <pre>{{name | filter : 'l' | json}}</pre>
</div>
<script type="text/javascript">
 var m1 = angular.module('myApp',[]);
 m1.controller('Aaa',['$scope',function($scope){
  $scope.name = [
   {color : 'red',age : '10'},
   {color : 'yellow',age : '20'},
   {color : 'blue',age : '30'},
   {color : 'green',age : '40'}
  ];
 }]);
</script>

在filter传入'l',会筛选出blue以及yellow。

<pre>{{name | filter : 'yellow' : true | json}}</pre> 如果像这样再传入true,就必须保证value的完整性,单单的'l'是无法筛选出来的。

上面都是在视图中以表达式的形式使用过滤器,下面我们来看看在JS中使用过滤器。

<div ng-controller="Aaa">
 <p>{{currency}}</p>
 <p>{{number}}</p>
 <p>{{uppercase}}</p>
 <pre>{{json}}</pre>
 <p>{{limitTo}}</p>
 <p>{{date}}</p>
 <pre>{{orderBy}}</pre>
 <pre>{{filter}}</pre>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope','$filter',function($scope,$filter){
 var colors = [{color : 'red',age : '10'},
   {color : 'yellow',age : '20'},
   {color : 'blue',age : '30'},
   {color : 'green',age : '40'}];

 $scope.currency = $filter('currency')(12334.273489274834,'¥');
 $scope.number = $filter('number')('12334.273489274834',2);
 $scope.uppercase = $filter('uppercase')('hello');
 $scope.json = $filter('json')({ name : 'xcg',age : 19 });
 $scope.limitTo = $filter('limitTo')('xiecg',2);
 $scope.date = $filter('date')('1448106268837','yyyy-MM-dd hh:mm:ss');
 $scope.orderBy = $filter('orderBy')(colors,'age',true);
 $scope.filter = $filter('filter')(colors,'l');
}]);
</script>

这些都属于内置过滤器,我们还可以用.filter自定义过滤器。

<div ng-controller="Aaa">
 <p>{{name | firstUpper : 2}}</p> 
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
//自定义过滤器
m1.filter('firstUpper',function(){
 return function(str,num){
  console.log(num); //2,得到传递的参数
  return str.charAt(0).toUpperCase() + str.substring(1);
 }
});
m1.controller('Aaa',['$scope','$filter',function($scope,$filter){
 $scope.name = 'hollo';
}]);
</script>

这里我们自定义了一个首字母大写的方法,例子是在视图中使用的,也可以在JS中使用过滤器。

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

Javascript 相关文章推荐
javascript iframe中打开文件,并检测iframe存在否
Dec 28 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
js判断一个元素是否为另一个元素的子元素的代码
Mar 21 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 Javascript
js微信分享接口调用详解
Jul 23 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
Angular路由简单学习
Dec 26 #Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 #Javascript
Angular工具方法学习
Dec 26 #Javascript
angular双向绑定模拟探索
Dec 26 #Javascript
jquery Banner轮播选项卡
Dec 26 #Javascript
Javascript中常用类型的格式化方法小结
Dec 26 #Javascript
Angular的自定义指令以及实例
Dec 26 #Javascript
You might like
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
JavaScript中string对象
2015/06/12 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python编程之属性和方法实例详解
2015/05/19 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Python 列表反转显示的四种方法
2020/11/16 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
中学生班主任评语
2014/01/30 职场文书
情人节活动策划方案
2014/02/27 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
整改通知书
2015/04/20 职场文书
2015最新民情日记范文
2015/06/26 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
优秀大学生申请书
2019/06/24 职场文书
python元组打包和解包过程详解
2021/08/02 Python