angularJS-filter过滤器

根据特定字符串过滤

如果(val.name)为false,则由后面的 || “” 替换显示:

js:
$scope.friends = [{id:'1',pid:'0',name:'John', phone:'555-1276'},  
                  {id:'2',pid:'1',name:'Annie', phone:'800-BIG-MARY'},  
                  {id:'3',pid:'1',name:null, phone:'555-4321'}]
html:
<span ng-repeat="(index, val) in friends">{{val.name|| "替换的内容"}}</span>

根据特定字段进行过滤

显示phone包含为’555’的数据:

html:
<table id="searchTextResults">
 <tr ng-repeat="friend in friends|filter: {phone: '555'}">
   <td>{{friend.name}}</td>
   <td>{{friend.phone}}</td>
 </tr>
</table>

根据输入的内容进行过滤

根据query输入的数据进行过滤,并根据所选择的order来排序:

Search:
<input ng-model="query">//根据input输入的内容筛选
Sort by:
<select ng-model="order">//排序
 <option value="name">name</option>
 <option value="age">age</option>
</select>
<ul class="persons">
    <li ng-repeat="friend in friends | filter:query | orderBy:order">
        {{person.name}}
        {{person.age}}
    </li>
</ul>

计算过滤后数组的长度

根据特定字段过滤后计算过滤后数组的长度,常配合ng-if使用:

js:$scope.friends = [{id:'1',pid:'0',name:'John', phone:'555-1276'},  
                  {id:'2',pid:'1',name:'Annie', phone:'800-BIG-MARY'},  
                  {id:'3',pid:'1',name:null, phone:'555-4321'}]
html:
<span>{{(friends| filter: {phone: '555'}).length}}</span>

自定义过滤器

自定义过滤器,HTML上的myfilter2:value.id对应函数function(datalist, id)的参数:

js:
myapp.filter('myfilter2', function() {
   return function(datalist, id) {
    var newayy=[];
    angular.forEach(datalist,function(value,key){
      if(value.pid==id){
        newayy.push(value);
      }
    });
    console.log(arguments);
      return newayy;  
   };  
 });
 myapp.controller('MyFilterController', ['$scope', function($scope) {  
   $scope.friends = [{id:'1',pid:'0',name:'John', phone:'555-1276'},  
                      {id:'2',pid:'1',name:'Annie', phone:'800-BIG-MARY'},  
                      {id:'3',pid:'1',name:null, phone:'555-4321'},  
                      {id:'4',pid:'2',name:'Adam', phone:'555-5678'},  
                      {id:'5',pid:'2',name:'David', phone:'555-8765'},  
                      {id:'6',pid:'3',name:'Mikay', phone:'555-5678'}];  
 }]);
html:
<div ng-repeat="(key, value) in friends">
 <span>{{value.name}}</span>:
 <span ng-repeat="(index, val) in friends|myfilter2:value.id| orderBy:'name'">{{val.name|| "字段为空"}}</span>//myfilter2:参数2:参数3,而friends则作为第一个参数传入函数
</div>

函数过滤器

每循环一次都向函数传递3个参数,item单个对象,index所在数组的下标,detalist为repeat的数组,也可通过$scope.friends.filter(item,index,detalist)在js中单独启用过滤器:

js:
$scope.friends = [{id:'1',pid:'0',name:'John', phone:'555-1276'},  
                      {id:'2',pid:'1',name:'Annie', phone:'800-BIG-MARY'},  
                      {id:'3',pid:'1',name:'lily', phone:'555-4321'},  
                      {id:'4',pid:'2',name:'Adam', phone:'555-5678'},  
                      {id:'5',pid:'2',name:'David', phone:'555-8765'},  
                      {id:'6',pid:'3',name:'Mikay', phone:'555-5678'}];
$scope.friendsfilter=function(item,index,detalist){//item单个对象,index所在数组的下标,detalist为repeat的数组
    return item.pid=='1';
   }
JS:
function confFormatter(value, row, index) {
      return $scope.friends.filter(function(item,index,detalist) {
          return item.pid=='1';
      });
   }
$scope.MyFriends=$scope.friends.filter(function(item,index,detalist) {
          return item.pid=='1';
   });
console.log($scope.MyFriends);
html:
<div ng-repeat="(key, value) in friends|filter:friendsfilter">
        <span>{{value.name}}</span>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GY程序源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值