angularjs filter详解-阿里云开发者社区

开发者社区> 航空母舰> 正文

angularjs filter详解

简介:
+关注继续查看

系统的学习了一下AngularJS,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter。如果对 smarty比较熟悉的话,学习angularjs会比较容易一点。这篇简单说一下angularjs的filter功能,angularjs的 filter功能可分为二种,一种是内置的过滤器,一种是自定义的。

一,内置的过滤器

1,uppercase,lowercase大小转换

Java代码  收藏代码
  1. {{ "lower cap string" | uppercase }}     //结果:LOWER CAP STRING  
  2. {{ "TANK is GOOD" | lowercase }}         //结果:tank is good  

 |这里的竖线是一种管道功能,如果对linux比较熟悉的话,这块的|根linux的管道功能,基本是一样的2,json格式化

Java代码  收藏代码
  1. {{ {foo: "bar", baz: 23} | json }}    //结果:{ "foo": "bar", "baz": 23 }  

注意:bza没格式前是没有双引号的,格式化后就转换成了json数据了。

3,date格式化

Java代码  收藏代码
  1. mysql时间戳 ng-bind="message.time * 1000 | date:'yyyy-mm-dd'"  
  2. {{ 1304375948024 | date:'medium'}}      //May 03, 2011 06:39:08 PM  
  3. {{ 1304375948024 | date }}                          //结果:May 3, 2011  
  4. {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}     //结果:05/03/2011 @ 6:39AM  
  5. {{ 1304375948024 | date:"yyyy-MM-dd hh:mm:ss" }}    //结果:2011-05-03 06:39:08  

 4,number格式化

Java代码  收藏代码
  1. {{ 1.234567 | number:1 }}    //结果:1.2    
  2. {{ 1234567 | number }}       //结果:1,234,567   

 5,currency货币格式化

Java代码  收藏代码
  1. {{ 250 | currency }}                 //结果:$250.00    
  2. {{ 250 | currency:"RMB ¥ " }}       //结果:RMB ¥ 250.00    

 6,filter查找 只能查value,不能查key

Java代码  收藏代码
  1. {{ [{"age"20,"id"10,"name""iphone"},  
  2. {"age"12,"id"11,"name""sunm xing"},  
  3. {"age"44,"id"12,"name""test abc"}  
  4. ] | filter:'s'}}    //查找含有有s的行  
  5.   
  6. //上例结果:[{"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}]  
  7.   
  8. {{ [{"age"20,"id"10,"name""iphone"},  
  9. {"age"12,"id"11,"name""sunm xing"},  
  10. {"age"44,"id"12,"name""test abc"}  
  11. ] | filter:{'name':'ip'} }}   //查找name like ip的行  
  12. //上例结果:[{"age":20,"id":10,"name":"iphone"}]  
  13.   
  14. $filter('number')(300002);  
  15. var jsonString = $filter('json')({"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}])  

 7,limitTo字符串,对像的截取

Java代码  收藏代码
  1. {{ "i love tank" | limitTo:6 }}           //结果:i love  
  2. {{ "i love tank" | limitTo:-4 }}          //结果:tank  
  3.   
  4. {{ [{"age"20,"id"10,"name""iphone"},  
  5. {"age"12,"id"11,"name""sunm xing"},  
  6. {"age"44,"id"12,"name""test abc"}  
  7. ] | limitTo:1 }}     //结果:[{"age":20,"id":10,"name":"iphone"}]  

 8,orderBy对像排序

Java代码  收藏代码
  1. {{ [{"age"20,"id"10,"name""iphone"},  
  2. {"age"12,"id"11,"name""sunm xing"},  
  3. {"age"44,"id"12,"name""test abc"}  
  4. ] | orderBy:'id':true }}        //根id降序排  
  5.   
  6. {{ [{"age"20,"id"10,"name""iphone"},  
  7. {"age"12,"id"11,"name""sunm xing"},  
  8. {"age"44,"id"12,"name""test abc"}  
  9. ] | orderBy:'id' }}           //根据id升序排  
  10.   
  11. {{ [{"age"20,"id"10,"name""iphone"},  
  12. {"age"12,"id"11,"name""sunm xing"},  
  13. {"age"44,"id"12,"name""test abc"}  
  14. ] | orderBy:['-age','name'] }}  

二,自定filter功能

filter的自定义方式也很简单,使用module的filter方法,返回一个函数,该函数接收输入值,并返回处理后的结果。

Java代码  收藏代码
  1. app.filter('过滤器名称',function(){  
  2.     return function(需要过滤的对象,过滤器参数1,过滤器参数2,...){  
  3.         //...做一些事情    
  4.         return 处理后的对象;  
  5.     }  
  6. });   

我找了一个基本angularjs的mvc框架,phonecat,自定义filter也是在这基础写的,这个框架挺好用的。

filters.js添加一个module

Java代码  收藏代码
  1. angular.module('tanktest', []).filter('tankreplace', function() {  
  2.     return function(input) {  
  3.         return input.replace(/tank/, "=====")  
  4.     };  
  5. });  
html中调用
Java代码  收藏代码
  1. {{ "TANK is GOOD" | lowercase |tankreplace}}   //结果:===== is good  

 注意:| lowercase |tankreplace管道命令可以有多个

 

Java代码  收藏代码
  1. yourApp.filter('orderObjectBy', function() {  
  2.   return function(items, field, reverse) {  
  3.     var filtered = [];  
  4.     angular.forEach(items, function(item) {  
  5.       filtered.push(item);  
  6.     });  
  7.     filtered.sort(function (a, b) {  
  8.       return (a[field] > b[field] ? 1 : -1);  
  9.     });  
  10.     if(reverse) filtered.reverse();  
  11.     return filtered;  
  12.   };  
  13. });  

该过滤器将对象转换成标准的数组并把它通过您指定字段排序。您可以使用orderObjectBy过滤器酷似ORDERBY,包括字段名后一个布尔值,以指定的顺序是否应该得到扭转。换句话说,假的是升序,真正的下降。html调用

Java代码  收藏代码
  1. <li ng-repeat="item in items | orderObjectBy:'color':true">{{ item.color }}</li>  

 

排序搜索

Java代码  收藏代码
  1. <input type="text" ng-model="search" class="form-control" placeholder="Search">  
  2. <thead>  
  3.     <tr>  
  4.         <!--  ng-class="{dropup:true}" -->  
  5.         <th ng-click="changeOrder('id')" ng-class="{dropup: order === ''}">  
  6.             产品编号  
  7.             <span ng-class="{orderColor: orderType === 'id'}" class="caret"></span>  
  8.         </th>  
  9.         <th ng-click="changeOrder('name')" ng-class="{dropup: order === ''}">  
  10.             产品名称  
  11.             <span ng-class="{orderColor: orderType === 'name'}" class="caret"></span>  
  12.         </th>  
  13.         <th ng-click="changeOrder('price')" ng-class="{dropup: order === ''}">  
  14.             产品价格  
  15.             <span ng-class="{orderColor: orderType === 'price'}" class="caret"></span>  
  16.         </th>  
  17.     </tr>  
  18. </thead>  
  19. <tbody>  
  20.     <tr ng-repeat="item in productData | filter: search | orderBy:order + orderType">  
  21.         <td>{{item.id}}</td>  
  22.         <td>{{item.name}}</td>  
  23.         <td>{{item.price | currency: '¥'}}</td>  
  24.     </tr>  
  25. </tbody>  

 angularjs

Java代码  收藏代码
  1. //默认排序字段  
  2. $scope.orderType = 'id';  
  3.   
  4. $scope.order = '-';  
  5.   
  6. $scope.changeOrder = function(type) {  
  7.     console.log(type);  
  8.     $scope.orderType = type;  
  9.   
  10.     if ($scope.order === '') {  
  11.         $scope.order = '-';  
  12.     }else{  
  13.         $scope.order = '';  
  14.     }  
  15. }  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6907 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4479 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7751 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5456 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9424 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
2138 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16819 0
+关注
514
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载