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中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
javascript连续赋值问题
Jul 08 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
详解Vue取消eslint语法限制
Aug 04 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
Typescript类型系统FLOW静态检查基本规范
May 25 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编实现程动态图像的创建代码
2008/09/28 PHP
php创建session的方法实例详解
2015/01/27 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
浅谈JavaScript数据类型
2015/03/03 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
js实现烟花特效
2020/03/02 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
Python 获取当前所在目录的方法详解
2017/08/02 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python实现音乐下载的统计
2018/06/20 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
pandas实现导出数据的四种方式
2020/12/13 Python
python regex库实例用法总结
2021/01/03 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
法学专业求职信
2014/07/15 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python