如何在 AngularJS 中创建动态过滤器

How to create dynamic filter in AngularJS?

本文关键字:创建 动态 过滤器 AngularJS      更新时间:2023-09-26
data = {key:0, Name:"Arun", key:1, Name:"Ajay", key:3, Name:"Ashok"}
function dynamicfilter(data, fieldName, filtervalue){
    $filter('filter')(data, { fieldName: filtervalue });
}

如何在 AngularJS 中做动态过滤器。我试过这样,它不起作用。

但是如果我给字段名称静态,比如

 function dynamicfilter(data, filtervalue){
        $filter('filter')(data, { Key: filtervalue });
    }

它正在工作。我可以知道如何在 AngularJS 中设置控制器内的动态字段过滤器吗?

若要使用动态属性名称,请尝试使用带有方括号的属性访问器,如下所示obj[propertyName] = value

function dynamicfilter(data, fieldName, filtervalue){
    var filter = {};
    filter[fieldName] = filtervalue;
    $filter('filter')(data, filter);
}

从 ES2015 开始,您还可以使用计算的属性名称。不过,这可能不适用于所有浏览器:

 $filter('filter')(data, { [fieldName]: filtervalue });

使用其他语法可以让你这样做:

var filterData = {}, key = 'myField', value = 'myValue';
filterData[key] = value;

结果:{ myField: 'myValue' }

你可以使用这样的东西

<input type="text" [(ngModel)]="search1" value="" class = "form-control" id = "search" />
<ng-container *ngFor="let app1 of apps">
      <tr  *ngIf="!search1 || app1.name.includes(search1)">
         <td>{{app1.name}}<td>
          <td>{{app1.login}}<td>  
      </tr>
    </ng-container>