角度过滤器,带有要搜索的动态属性列表

时间:2014-05-30 11:32:36

标签: angularjs angularjs-directive angularjs-ng-repeat

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

so, here's what i got

它可以使用此自定义过滤器按预期搜索特定属性: 我的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-repeat进行过滤,如下所示:

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

它会起作用。

但是,两者都无法合作。

我的问题是

如何创建真正通用的绑定下拉菜单和搜索框。这将获得可搜索的属性并适当地处理过滤? (最好不使用ng-show或进行DOM操作)。

如果需要,

愿意提供更多细节。

1 个答案:

答案 0 :(得分:2)

How about this?

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

<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的值,但是this isn't possible in javascript,所以我编写了一个辅助函数来执行此操作:

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