【发布时间】:2017-06-07 16:20:07
【问题描述】:
在 angularJs 中有没有办法通过匹配两个或多个字段来过滤 ng-repeat? 例如,我想列出名字或姓氏中包含字母“J”的所有人。 如果我使用当前函数,它会列出名字和姓氏都有字母“J”的人
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<title>Welcome To My Homepage</title>
<link href="css/style.css" rel="stylesheet" />
<link href="css/bootstrap.min.css" rel="stylesheet" />
</head>
<body ng-controller="MyCtrl">
<div ng-controller="MyCtrl">
<input type="text" ng-model="search">{{search}}
<table border="1">
<tr ng-repeat="row in list | filter:{firstName:search} | filter:{lastName:search}">
<td>{{row.firstName}} {{row.lastName}}</td>
</tr>
</table>
</div>
<script src="js/jquery-2.2.1.js"></script>
<script src="js/angular.js"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl', ['$scope','$http','$filter', function($scope,$http,$filter) {
$scope.list = [{
"id": 1,
"address": "New York City",
"firstName": "Jennifer",
"middleName": null,
"lastName": "Aniston"
}, {
"id": 1,
"address": "New York City",
"firstName": "Jennifer",
"middleName": null,
"lastName": "Leela"
}, {
"id": 2,
"address": "Beverley Hills",
"firstName": "Angelina",
"middleName": null,
"lastName": "Jolie"
}, {
"id": 3,
"address": "London",
"firstName": "Emma",
"middleName": null,
"lastName": "Watson"
}];
}]);
</script>
</html>
【问题讨论】:
-
您需要创建过滤器自定义Custom Filter
-
是的,在这种情况下自定义过滤器是最好的解决方案!
标签: angularjs angularjs-ng-repeat angularjs-filter