Поэтому я пытаюсь выяснить, как финть объекта объектов в угловом ng-повторе.
Данные
$scope.data = {key1:value1, key2:value2, key3:value3};
$scope.filterStr = 'ey';
NG-Repeat
<div ng-repeat="(val, key) in data | filter:filterStr"></div>
Это явно не работает, так как фильтр ожидает массив, а не объект, но я хочу знать, как это сделать, не преобразовывая мои данные в массив.
Я понял, мне нужно создать собственный фильтр. Код ниже работает отлично.
Пользовательский фильтр
angular.module('ui.global')
.filter('objFilter', function () {
return function (obj, param) {
var newObj = {};
if(param){
for(var key in obj){
if(key.toLowerCase().includes(param.toLowerCase())){
newObj[key] = obj[key];
}
}
} else {
newObj = obj;
}
return newObj;
};
});
Данные
$scope.data = {key1:value1, key2:value2, key3:value3};
$scope.filterStr = 'ey';
NG-Repeat
<div ng-repeat="(val, key) in data | objFilter:filterStr"></div>