我的目标是创建一个搜索框,通过搜索所有字段或特定属性来过滤集合。这将由选择确定。
它可以使用此自定义过滤器按预期搜索特定属性: 我的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操作)。
如果需要,愿意提供更多细节。
答案 0 :(得分:2)
过滤器过滤器支持将对象语法作为参数,其中键是搜索字段,值是搜索查询。例如,在您的模板中:
<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)">