如何在AngularJS ng-repeat中的多个字段上进行过滤

mof*_*tty 3 filter angularjs angularjs-filter

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

And*_*ans 5

根据角度文档,您可以将对象传递给过滤器.所以你可以这样做:

scope.query = {};
Run Code Online (Sandbox Code Playgroud)

然后在你的HTML中

First name: <input ng-model="query.firstName" />
Last name: <input ng-model="query.lastName" />
Run Code Online (Sandbox Code Playgroud)

并且您的过滤器表达式将保持不变:

ng-repeat="reservation in reservations | filter:query"
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅"表达式"参数的详细信息:https://docs.angularjs.org/api/ng/filter/filter.

  • 对不起,我想我没有说清楚我的问题.我希望能够在同一个搜索栏中搜索名字和姓氏.此解决方案使两个单独的搜索栏. (2认同)