繁体   English   中英

按数组长度或AngularJS中的嵌套对象属性过滤

[英]Filter by array length or nested object property in AngularJS

我有一个对象看起来像这样的数组:

record in recordlist {
    date : "02/12/2014"
    time : "00.02.01"
    car : "369"
    pax: [
        {
        name : "Ben"
        chosen : true
        },
        {
        name : "Eric"
        chosen : true
        }
    ]
}

到目前为止,当我使用ng-repeat进行列表时,我可以按对象(记录)属性进行过滤。

过滤:

<input class="form-control" placeholder="Time" ng-model="search.time">

NG-重复:

<div ng-repeat="record in filteredRecords = (recordlist | filter: search)">

当我要过滤嵌套数组( pax )时,问题就来了。 我已经尝试过了,但是到目前为止还没有运气:

<input ng-model="search.pax.name"> // filter by name property

<input ng-model="search.pax.length"> // filter by array length

有小费吗?

您可能需要使用自定义过滤器:

这样的事情应该做到:

<input ng-model="searchName">

<div ng-repeat="record in recordlist | filter: filterByNested">

在您的控制器中:

$scope.filterByNested = function (record) {
    return record.pax.reduce(function (prev, curr, idx, array) {
        return prev || curr.name == $scope.searchName;
    }, false);
};

基本上,您定义了一个自定义过滤器,如果要搜索的元素在嵌套数组中,则返回true。

也将过滤器功能更改为基于长度也很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM