我正在使用AngularJS中的查询过滤器创建一个搜索网站。我找到了很多关于如何在一个字段中实现此搜索的教程,但没有一个解释如何在多个字段中进行搜索。因此,如果您的数据有firstName:“John”,lastName:“Smith”我希望能够在我的搜索栏中输入“John Smith”,并找到正确的结果,但只有“John”或“史密斯“有效。
<div ng-include="'partials/navbar.html'"></div>
<div class="container" ng-controller="ResListCtrl">
<div class="row">
<div class="col-md-2">
Search: <input ng-model="query">
</div>
</div>
<hr>
<div class="row">
<div class="col-md-10">
<ul ng-repeat="reservation in reservations | filter:query">
<li><a href="#">{{reservation.firstName}} {{reservation.lastName}}</a></li>
<p>{{reservation.resort}}</p>
</ul>
</div>
</div>
</div>
答案 0 :(得分:5)
根据角度文档,您可以将对象传递给过滤器。所以你可以这样做:
scope.query = {};
然后在你的HTML中
First name: <input ng-model="query.firstName" />
Last name: <input ng-model="query.lastName" />
您的过滤器表达式将保持不变:
ng-repeat="reservation in reservations | filter:query"
有关详细信息,请参阅“表达式”参数的详细信息:https://docs.angularjs.org/api/ng/filter/filter。
答案 1 :(得分:0)
过滤器也接受一个函数(https://docs.angularjs.org/api/ng/filter/filter):
function(value, index) {
return value === query.first_name + ' ' + query.last_name;
}