具有属性来搜索的动态列表角度滤波器(angular filter with dynamic list

2019-10-20 04:58发布

我的目标是创建一个搜索框,将通过搜索所有字段或者筛选集合,或者通过特定的属性。 这将通过选择确定。

所以,这里是我得到了什么

它能够通过特定的属性进行搜索,果然,用这种自定义过滤器:我HTML-

<tr ng-repeat="smartphone in smartphones | filter: search ">

JS-

$scope.search = function (item){
  if (item[$scope.selectedSearchBy].indexOf($scope.query)!=-1) {
    return true;
  }
  return false;
};

注意,为了能在所有领域的搜索,我可以改变我的NG-重复被过滤如下:

<tr ng-repeat="smartphone in smartphones | filter:query ">

它会工作。

但是,这两个不会一起工作。

我的问题是

我怎样才能建立一个真正的通用绑定下拉列表和搜索框。 将接收的搜索属性,并采取过滤的护理appropriatly? (优选不使用NG-节目或使得DOM操作)。

很想如果需要提供更多的细节。

Answer 1:

这个怎么样?

过滤器过滤支持对象语法作为参数,其中关键是搜索字段,值是搜索查询。 例如,在您的模板:

<tr ng-repeat="smartphone in smartphones | filter:{brand: query}">

将根据查询品牌过滤列表,并

<tr ng-repeat="smartphone in smartphones | filter:{'$': query}">

将搜索所有字段。 所以,如果只是有办法做到这一点

<tr ng-repeat="smartphone in smartphones | filter:{selectedSearchBy: query}">

其中对象的键设置为变量的值selectedSearchBy ,但是这是不可能的JavaScript ,所以我写了一个辅助函数来做到这一点:

<tr ng-repeat="smartphone in smartphones | filter:filterParam(selectedSearchBy, query)">


文章来源: angular filter with dynamic list of attributes to search