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移除事件 js绑定事件实例应用
Nov 28 Javascript
javaScript基础语法介绍
Feb 28 Javascript
使用console进行性能测试
Apr 27 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
关于使用axios的一些心得技巧分享
Jul 02 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 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
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
vue3.0 上手体验
2020/09/21 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Python 学习教程之networkx
2019/04/15 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python线程信号量semaphore使用解析
2019/11/30 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
给排水专业应届生求职信
2013/10/12 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
会议主持人开场白台词
2015/05/28 职场文书
小学三年级作文之写景
2019/11/05 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
我去timi了,一起去timi是什么意思?
2022/04/13 杂记