AngularJS过滤器filter用法分析


Posted in Javascript onDecember 11, 2016

本文实例讲述了AngularJS过滤器filter用法。分享给大家供大家参考,具体如下:

在开发中,经常会遇到这样的场景

如用户的性别分为“男”和“女”,在数据库中保存的值为1和0,用户在查看自己的性别时后端返回的值自然是1或0,前端要转换为“男”或“女”再显示出来;

如我要换个羽毛球拍,某猫上羽毛球拍的品牌多达数十种,我想单独查看YONEX这个品牌的羽毛球拍;

买完羽毛球拍我还想买一桶羽毛球,点击按销量排序展示商品;

AngularJS过滤器filter用法分析

以上三种场景分别对数据进行了转换/筛选/排序,总而言之就是对数据的格式化,AngularJS的filter就是用来做这个事的。

内置过滤器

AngularJS内置了很多过滤器,在HTML模板的绑定符号{{}}内通过|来调用过滤器

如字母转换成大写:

$scope.name='wangmeijian'

{{name | uppercase}}  // 输出 WANGMEIJIAN

数字转成千分位写法:

$scope.num = 12345678

{{num | number}} // 输出 12,345,678

日期格式化:

$scope.date=new Date()

{{date | date:'yy-MM-dd'}}  // 输出 2015-11-19

数字格式化成货币:

$scope.num=987654321

{{num | currency:'¥'}}  // 输出 ¥987,654,321.00

demo示例:http://runjs.cn/code/ztgq7fwg

稍微复杂一点的过滤器——‘filter',可以返回给定数组的子集,它接收一个参数,这个参数可以是字符串、对象、函数

字符串:返回所有包含这个字符串的元素,想要返回不包含这个字符串的元素则在前面加!

demo:

{{['wang','mei','jian'] | filter:'a'}} // 返回包含字母a的元素 ['wang','jian']

对象:Angular会将待过滤对象的属性与这个对象中的同名属性进行比较,如果属性值是字符串会判断是否包含该字符串(注意这里是包含,并不需要完全相等)

demo:

{{ [
  {
    name: 'wangmeijian',
    sex: 'boy'
  },
  {
    name: 'bokeyuan',
    sex: 'sex'
  }
  ] | filter:{
    sex: 'bo'

}
}}
// 输出 [{"name":"wangmeijian","sex":"boy"}]

函数:对每个元素都执行该函数,返回非假值的元素会出现在新的数组中并返回

demo:

$scope.getNumber = function(n){
return !isNaN(n);
}
{{ ['demo',2,3] | filter:getNumber}} // 输出 [2,3]

自定义过滤器

当内置函数不能满足你的业务需求时,就需要自定义一个过滤器,自定义过滤器返回一个函数,函数的参数就是HTML模板中|左侧的数据,它会自动传入过滤器中

比如需求是将一句话中的每个单词首字母变成大写

<html ng-app='app'>
  <head>
    <title>AngularJS过滤器filter入门</title>
    <script type="text/javascript" src="http://cdn.bootcss.com/angular.js/1.5.0-beta.1/angular.js"></script>
  </head>
  <body ng-controller='myController'>
    <p>{{ str | capitalize}}</p>
    <!-- 输出 Hello, Welcome To Bokeyuan! -->
    <script type="text/javascript">
    var app = angular.module('app',[])
    .controller('myController',['$scope', function($scope){
      $scope.str = 'hello, welcome to bokeyuan!'
    }])
    .filter('capitalize', function(){
      return function(str){
        var arr = str.split(/\s+/);
        for (var i = 0; i < arr.length; i++) {
          arr[i] = arr[i].substr(0,1).toUpperCase() + arr[i].slice(1);
        };
        return arr.join(" ")
      }
    })
    </script>
  </body>
</html>

需要注意的是,内置过滤器‘filter'的参数是函数时,会对数组的每个元素执行该函数,自定义过滤器是对数组对象执行它return的函数

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
Nov 16 Javascript
jQuery数据类型小结(14个)
Jan 08 Javascript
vue2.0中goods选购栏滚动算法的实现代码
May 17 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
webpack打包react项目的实现方法
Jun 21 Javascript
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
javascript运行机制之执行顺序理解
Aug 03 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 #Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 #Javascript
利用JS判断鼠标移入元素的方向
Dec 11 #Javascript
实现JavaScript高性能的数据存储
Dec 11 #Javascript
探索Javascript中this的奥秘
Dec 11 #Javascript
实例浅析js的this
Dec 11 #Javascript
解析js如何获取css样式
Dec 11 #Javascript
You might like
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python 制作简单的音乐播放器
2020/11/25 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
门前三包责任书
2014/04/15 职场文书
小学家长评语大全
2014/04/16 职场文书
聘用意向书
2014/07/29 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
离婚被告代理词
2015/05/23 职场文书
母亲去世追悼词
2015/06/23 职场文书
电视新闻稿
2015/07/17 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers
Go语言编译原理之源码调试
2022/08/05 Golang