星空网 > 软件开发 > Java

使用AngularJS中的filterFilter函数进行过滤

 

AngularJS中有一个filterFilter函数用来对集合过滤,非常方便。

源代码大致如下:

 

function filterFilter(){  return function(aray, expression comparator){    if(!isArray(array)) return array;        var comparatorType = typeof(comparator),      predicates = [],      evaluatedObjects = [];        predicates.check = function(value){      for(var j = 0; j < predicates.length; jii){        if(!predicates[j](value){          return false;        })      }      return true;    }        if(comparatorType != 'function'{      if(comparatorType === 'boolean' && comparator){        comparator = function(obj, text){          return angular.equals(obj, text);        }      } else {        comparator = function(obj, text){          ...        }      }    })   }}

 

controller部分如下:

 

angular .module('app') .controller('MainCtrl', ['$scope',  function($scope) {  $scope.users = $scope.users = [    {name: '', email: '', joined: 2015-1-1}  ];  $scope.filter = {   fuzzy: '',   name: ''  };  ... }]);

 

■ 搜索所有任意字段

 

<input type="text" ng-model="filter.any" ><tr ng-repeat="user in users | filter: filter.any">  <td>{{user.name}}</td>  <td>{{user.email}}</td>  <td>{{user.joined | date}}</td></tr>

 


■ 搜索某个字段

 

<input type="text" ng-model="filter.name"><tr ng-repeat="user in users   | filter: filter.any  | filter: {name: filter.name}">  <td>{{user.name}}</td>  <td>{{user.email}}</td>  <td>{{user.joined | date}}</td></tr>

 

如果想name字段完全匹配:

 

<tr ng-repeat="user in users   | filter: filter.any  | filter: {name: filter.name}:true">  <td>{{user.name}}</td>  <td>{{user.email}}</td>  <td>{{user.joined | date}}</td></tr>

 


■ 搜索时间段

contrlller部分修改为:

 

angular .module('app') .controller('MainCtrl', ['$scope',  function($scope) {  $scope.users = $scope.users = [    {name: '', email: '', joined: 2015-1-1}  ];  $scope.filter = {   fuzzy: '',   name: ''  };  $scope.minDate = new Date('January 1, 2000');  $scope.maxDate = new Date();  $scope.min = function(actual, expected) {   return actual >= expected;  };  $scope.max = function(actual, expected) {   return actual <= expected;  }; }]);

 

页面部分为:

 

<input type="text" ng-model="fromDate" data-min-date="{{minDate}}"><input type="text" ng-model="untilDate" data-max-date="{{maxDate}}"><tr ng-repeat="user in users   | filter: filter.any  | filter: {name: filter.name}  | filter: {joined: untilDate}:max  | filter: {joined: beforeDate}:min">  <td>{{user.name}}</td>  <td>{{user.email}}</td>  <td>{{user.joined | date}}</td></tr>

 




原标题:使用AngularJS中的filterFilter函数进行过滤

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

fba物流价格表:https://www.goluckyvip.com/tag/20125.html
fba物流空运:https://www.goluckyvip.com/tag/20126.html
fba物流美国:https://www.goluckyvip.com/tag/20127.html
fba物流美国fba:https://www.goluckyvip.com/tag/20128.html
fba物流哪个好:https://www.goluckyvip.com/tag/20129.html
外贸邮件模板:https://www.goluckyvip.com/tag/2013.html
大连有啥好玩的景点-大连有啥好玩的景点推荐孩子:https://www.vstour.cn/a/411235.html
咸阳机场到临潼景点 西安咸阳机场到临潼有多远:https://www.vstour.cn/a/411236.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流