繁体   English   中英

角度-过滤嵌套对象

[英]Angular - Filter on nested objects

我有一个由搜索过滤的JSON对象数组。 在搜索中,我将搜索ng-model上的ng-model设置为search.$ ,但它仅搜索每个对象的顶部,但是我需要搜索嵌套在对象内部的所有对象。 在Angular中有一种简单的方法吗?

可以使用自定义递归过滤器功能(有关文档,请参见https://docs.angularjs.org/api/ng/filter/filter ),以下示例对此进行了说明:

 angular.module('deepFilterTestApp', []) .filter('deepFilter', function($filter) { return function(text) { return function (value) { var searchTerm = text; if (angular.isObject(value)) { var found = false; angular.forEach(value, function(v,k) { found = found || $filter('deepFilter')(searchTerm)(v); }); return found; } else if (angular.isString(value)) { if (value.indexOf(searchTerm) !== -1) { return true; } else { return false; } } }; }; }) .controller('DeepFilterTestController', function ($scope) { $scope.myArray = [ { property1: { deepProperty1: "deeepppp 1!!" }, property2: { deepProperty2: "deeep 2!!" } }, { property1: { deepProperty1: "dooop 1!!" }, property2: { deepProperty2: { evenDeeperProperty1: "deeepest 2!!" } } } ]; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="deepFilterTestApp" ng-controller="DeepFilterTestController"> <p>"dooop": {{ myArray | filter : ('dooop'|deepFilter) }}</p> <p>"deeep": {{ myArray | filter : ('deeep'|deepFilter) }}</p> <p>"deeepppp": {{ myArray | filter : ('deeepppp'|deepFilter) }}</p> <p>"deeepest": {{ myArray | filter : ('deeepest'|deepFilter) }}</p> </div> 

暂无
暂无

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

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