AngularJS过滤器基于显示的列

时间:2015-11-10 15:16:24

标签: angularjs

请参阅此Plunk:http://plnkr.co/edit/5YCCdDSnpHKRU51R9vCL?p=preview

如何根据显示的字段进行过滤?目前,过滤是在完整的用户对象上完成的。

例如:

$scope.users1 = [
  {name: 'Dave', id: 24},
  {name: 'Tim', id: 22},
  {name: 'Laura', id: 20}
];

<user-info-card users="users" label="name">
</user-info-card>

如果我只显示id,即使我键入&#34; Dave&#34;,过滤器也能正常工作。我希望它仅适用于显示的字段。也希望它是通用的。它可能是一个不同的对象,但搜索词应该查看标签字段并相应地过滤

2 个答案:

答案 0 :(得分:1)

添加了一个基于标签排序的功能,希望是足够的。

http://plnkr.co/edit/iCepagIKA1OFDjBnB35I?p=preview

$scope.searchTerm = function(item) {        
  if(item[$scope.label].toString().
    startsWith($scope.searchCondition1)){
          return true;
        }
        else{
          return false;
        }
}

答案 1 :(得分:0)

您可以使用严格过滤器来完成这些工作。

<强>的test.html

<div>
 <input placeholder="Search for a name..." ng-model="searchTerm" ng-change="onChange()">
  <div ng-repeat="user in users | filter:user:strict">
    ...
  </div>
</div>

在文本框键更改事件期间,搜索项将转换为对象字段值。

script.js

$scope.onChange = function () {
      var user = {};
      user[$scope.label] = $scope.searchTerm;
      $scope.user = user;
     };

Check this link