angularjs - 如何使用$ filter过滤对象数组中的特定字段('filter')

标签 angularjs angularjs-filter

我想使用$ filter('filter')过滤员工对象数组,以仅基于可从下拉/选择中选择的员工的名字字段过滤结果。请注意,我不想在ng-repeat中使用“|过滤器:”。

困难之处在于name字段是另一个名为“details”的字段的属性,因此我无法像下面的代码一样detail.name,因为它将出错。

$scope.filteredEmployees = $filter('filter')(employees, {details.name: selectedName }); 

有关员工数组对象的结构,请参见下文。

如何使用$ filter('filter')告诉它根据details.name字段过滤记录?

预先感谢您的帮助!

这是代码:
Var selectedName = “An”;
$scope.filteredEmployees = $filter('filter')(employees, {**details.name:** selectedName });
Var employees  = [
      {
        Date: 01/01/2012
        details: {
          name: ‘An’,
      age: 25

        }
      },
      {
        Date: 01/01/2012
        details: {
          name: ‘'Bill',
      age: 20

        }
            }];

    //Here is 
    <select ng-model="selectedName" ng-options="e for e in employees" data-ng-show="employees.length > 0" ng-change="filterEmployees">
        <option value="">All Employees</option>
    </select><br>

    function filterEmployees()  {
        $scope.filteredEmployees = $filter('filter')(employees, "Joe");
    };

最佳答案

该表达式可以是map of property-to-filters:,其中对象中的每个属性都映射到结果集中的相应属性。

$filter('filter')(employees, {name:"Joe"});

Live Demo

使用自定义功能

如果数据更复杂,并且需要更高级的过滤,则可以简单地传入自定义谓词函数来评估是否应过滤项目。

函数的输入将数组的每个项目作为参数,并且如果应从结果集中排除该项目,则应返回false
var people = [{date:new Date(), details:{
    name: 'Josh',
    age: 32
}}, {date:new Date(), details:{
    name: 'Jonny',
    age: 34
}}, {date:new Date(), details:{
    name: 'Blake',
    age: 28
}}, {date:new Date(), details:{
    name: 'David',
    age: 35
}}];

$scope.filteredPeople = $filter('filter')(people, function(person){
    return /^Jo.*/g.test(person.details.name);
});

Live Demo

关于angularjs - 如何使用$ filter过滤对象数组中的特定字段('filter'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851571/

相关文章:

html - Angularjs如何清除输入中的选中字段?

AngularJS 仅对一个字段进行严格过滤

javascript - 处理灵活的参数量

javascript - 从未调用过自定义 Angular 过滤器?

javascript - AngularJs - 在指令 Controller 中使用自定义过滤器

javascript - Angularjs 按特定元素过滤

javascript - 具有最小值和最大值的 Angular 滤波器

angularjs - Angular JS 日期过滤器不起作用

javascript - 在屏幕阅读器中移动光标

javascript - Angular JS 文件上传内容处理