如何使用带有ng-repeat的过滤器基于字段值过滤和对象

时间:2015-01-07 23:07:18

标签: javascript angularjs angularjs-ng-repeat angular-filters

我正在使用Angular而且我使用了这个对象:

$scope.items = {
    'abcdhx3': {name:'file1.jpg', type:'.jpg', size:30000},
    'sxcdhb2': {name:'file2.jpg', type:'.png', size:30000},
    'k4cdhx5': {name:'file3.jpg', type:'.jpg', size:30000},
    '23cdhd3': {name:'file4.jpg', type:'.png', size:30000},
    'ascdhx3': {name:'file45.jpg', type:'.png', size:30000}
};

我想根据" name"过滤此对象和"键入"我可以从输入文本中获得的值。那么如何使用ng-repeat中的过滤器来做到这一点,例如:我想显示包含" file4"类型" .png"。

<div data-ng-repeat="(key, item) in items">
    <div>{{ item.name }}</div>
</div>

2 个答案:

答案 0 :(得分:1)

我使用这样的转换过滤器解决了这个问题:

angular.module('test').filter('itemsFilter', [
    function() {
        return function(items) {
            var list = [];
            for (var i in items) {
                list.push(items[i]);
            }
            return list;
        };
    }
]);

在应用搜索过滤器之前过滤项目

Name: <input type="text" ng-model="search.name" />
Type: <input type="text" ng-model="search.type" />
<div ng-repeat="item in items | itemsFilter | filter:search">
    <li>{{item.name}}</li>
    <li>{{item.type}}</li>
</div>

答案 1 :(得分:0)

您可以使用简单的Filter

来完成此操作

<强> HTML

Name: <input type="text" ng-model="search.name" />
Type: <input type="text" ng-model="search.type" />
Whatever: <input type="text" ng-model="search.$" />
<ul ng-repeat="item in items | filter:search">
    <li>{{item.name}}</li>
    <li>{{item.type}}</li>
</ul>