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 相关文章推荐
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
JavaScript中操作Mysql数据库实例
Apr 02 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
jQuery实现文字自动横移
Jan 08 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 Javascript
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
Aug 27 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
利用js canvas实现五子棋游戏
Oct 11 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 strtr() 函数使用说明
2008/11/21 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
node.js通过url读取文件
2020/10/16 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
python路径的写法及目录的获取方式
2019/12/26 Python
python爬虫添加请求头代码实例
2019/12/28 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
应届生程序员求职信
2013/11/05 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
效能监察建议书
2014/05/19 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
公司员工离职证明书
2014/10/04 职场文书
新党章的学习心得体会
2014/11/07 职场文书
结婚仪式主持词
2015/06/29 职场文书