Angular ng-repeat filter: ¿如何指定过滤字段?

Angular ng-repeat filter: ¿How to specify filter fields?

好吧,看起来很简单,其实不然。

我想执行一个简单的 angular 过滤器,但我需要指定我的数组的哪些字段在过滤器中使用。

基本过滤器是:

 <li ng-repeat="person in app.people | filter: app.search">

单场过滤器是:

<li ng-repeat="person in app.people | filter: {Surname: app.search}">

如何为过滤器指定多个字段? 类似于:

<li ng-repeat="person in app.people | filter: {Name,Surname: app.search}">

这是一个带有基本过滤器和单字段过滤器的 Plunker:https://jsfiddle.net/odLz1v71/3/

在这种情况下,我建议您在控制器中添加一个过滤功能,如下所示:

vm.searchFilter = function(item){
    // Add your own search logic here
    return item.Name.includes(vm.search) || item.Surname.includes(vm.search);
}

然后像这样使用它:

<li ng-repeat="person in app.people | filter: app.searchFilter">

我认为您不能直接使用基本过滤器执行此操作,但您可以为 filter 过滤器提供一个函数来为您执行此检查:

  vm.checkName = function (value) {
    return value.Name.indexOf(vm.search) > -1 || value.Surname.indexOf(vm.search) > -1;
  };

参见:https://jsfiddle.net/odLz1v71/4/