【问题标题】:AngularJS filter using multiple inputsAngularJS过滤器使用多个输入
【发布时间】:2014-10-12 18:43:33
【问题描述】:

我想使用两个输入框过滤我的用户数组。

这是我的数组的结构:

    $scope.users = [{
    id: 1,
    fname: 'Sophia',
    lname: 'Smith',
    email: 'sophia@mail.com'
}...

我的输入框叫做 nameSearch 和 emailSearch。我想用 nameSearch 搜索 fname 和 lname 属性,同时将 emailSearch 应用于 email 属性。

我发现当我使用像 | 这样的简单过滤器时filter:nameSearch,它搜索整个数组对象。我想将其限制为仅使用 fname、lname 和电子邮件进行搜索。

我已阅读文档并尝试过类似的方法

<li ng-repeat="user in users | filter:{fname: nameSearch, lname: nameSearch, email: emailSearch}">{{user.fname + ' ' + user.lname}}</li>

但它并没有像我想象的那样工作。

我是否必须为此编写自定义过滤器?

Fiddle

【问题讨论】:

  • 你看过documentation,尤其是expression参数的说明吗?

标签: javascript angularjs


【解决方案1】:

如果您使用所有过滤器,则该组合是所有搜索的 AND。

您可以使用基本搜索:

<li ng-repeat="user in users | filter: nameSearch ">{{user.fname + ' ' + user.lname}}</li>

它会根据您的搜索检索任何字段。

如果您需要更具体地过滤某些字段,您可以使用 OR 逻辑为该操作创建一个函数。

【讨论】:

  • "filter: nameSearch" 将过滤对象中的所有内容。因此,如果我有一个名为 maidenName 的属性,它也将包含在过滤器中。我希望 nameSearch 只搜索 fname 和 lname 字段。
猜你喜欢
  • 2013-02-21
  • 2015-07-18
  • 2014-01-25
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多