2016-08-02 24 views
0

Also versuche ich herauszufinden, wie man ein Objekt von Objekten in einer angularen ng-Wiederholung fintleriert.Wie filtern Sie ein Objekt von Objekten mit eindeutigen Schlüsseln in einem angular ng-repeat?

Daten

$scope.data = {key1:value1, key2:value2, key3:value3}; 
$scope.filterStr = 'ey'; 

NG-Repeat

<div ng-repeat="(val, key) in data | filter:filterStr"></div> 

Das ist offensichtlich nicht funktioniert, wie der Filter ein Array und kein Objekt erwartet, aber ich möchte wissen, wie zu tun dies ohne meine Daten in ein Array zu konvertieren.

Antwort

0

Ich fand es heraus, ich musste einen benutzerdefinierten Filter erstellen. Der folgende Code funktioniert großartig.

Benutzerdefinierte Filter

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; 
    }; 
}); 

Daten

$scope.data = {key1:value1, key2:value2, key3:value3}; 
$scope.filterStr = 'ey'; 

NG-Repeat

<div ng-repeat="(val, key) in data | objFilter:filterStr"></div>