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 相关文章推荐
js变量作用域及可访问性的探讨
Nov 23 Javascript
javaScript checkbox 全选/反选及批量删除
Apr 28 Javascript
jQuery实现的类flash菜单效果代码
May 17 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
angular.foreach 循环方法使用指南
Jan 06 Javascript
JS数字抽奖游戏实现方法
May 04 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
vue router动态路由设置参数可选问题
Aug 21 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 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
PHP5 安装方法
2007/01/15 PHP
PHP操作xml代码
2010/06/17 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python画折线图的程序
2018/07/26 Python
python取余运算符知识点详解
2019/06/27 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Pytorch to(device)用法
2020/01/08 Python
浅谈Python中的模块
2020/06/10 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
开放系统互连参考模型
2016/06/29 面试题
简历的个人自我评价范文
2014/01/03 职场文书
三方协议书范本
2014/04/22 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
教师学期末个人总结
2015/02/13 职场文书
倡议书的格式写法
2015/04/28 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书