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遮罩层代码实例
Nov 14 Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
实现高性能javascript的注意事项
May 27 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
js实现自定义滚动条的示例
Oct 27 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下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
详解Python3中的 input() 函数
2020/03/18 Python
升职自荐书范文
2013/11/28 职场文书
公司经理聘任书
2014/03/29 职场文书
学习雷锋倡议书
2014/04/15 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
项目负责人岗位职责
2015/02/15 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
出国留学导师推荐信
2015/03/26 职场文书
房租涨价通知
2015/04/23 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript