详解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 相关文章推荐
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
为指定的元素添加遮罩层的示例代码
Jan 15 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
详解jQuery中的prop()使用方法
Jan 05 jQuery
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 Javascript
vue中如何自定义右键菜单详解
Dec 08 Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
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仿QQ验证码的实例分析
2013/07/01 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
一些mootools的学习资源
2010/02/07 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
python 提取文件的小程序
2009/07/29 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
python修改文件内容的3种方法详解
2019/11/15 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
小学生获奖感言范文
2014/02/02 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
财务工作个人总结
2015/02/27 职场文书
教育读书笔记
2015/07/02 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
配置nginx负载均衡
2022/05/06 Servers