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 相关文章推荐
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
Web开发使用Angular实现用户密码强度判别的方法
Sep 27 Javascript
Angular-UI Bootstrap组件实现警报功能
Jul 16 Javascript
React 路由懒加载的几种实现方案
Oct 23 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
小程序实现横向滑动日历效果
Oct 21 Javascript
vue导航栏部分的动态渲染实例
Nov 01 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 Javascript
JS Canvas接口和动画效果大全
Apr 29 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
JS控制表格隔行变色
2006/06/26 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
Python 的 with 语句详解
2014/06/13 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
有趣的python小程序分享
2017/12/05 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
优秀团队获奖感言
2014/02/19 职场文书
如何写好建议书
2014/03/13 职场文书
小学二年级评语
2014/04/21 职场文书
毕业生个人总结
2015/02/28 职场文书
质检员岗位职责范本
2015/04/07 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书