2017-03-28 1 views
1

Ich brauche Hilfe beim Filtern von Daten in ng-Repeat. Ich habe versucht, einige Dinge zu tun, aber ich kann keine Lösung finden, die in meinem Fall funktioniert. Ich brauche so etwas zu zu:Mehrfachfilter in ng-repeat

sensor in sensors | filter: { group: group.id, (name: search || description: search) } 

Suche ist ng-model (Texteingabe) und group.id ist ID der Gruppe, die in ng-repeat (Ich habe zwei verschachtelte ng-Wiederholung) genereted werden. Ich habe versucht, meinen Filter zu tun:

$scope.search = ''; 
    $scope.searchFilter = function() { 
     return function (p) { 
      if ($scope.search!='') { 
       for (var i in p) { 
        console.log("p.name: "+p.name+", search: "+$scope.search); 
        if (p.name == $scope.search || p.description == $scope.search) { 
         return p; 
        } 
       } 
      } else { 
       return p; 
      } 

     } 
    } 

Fast funktioniert. Es filtert meine Daten aber nur, wenn ich den richtigen Namen schreibe. Zum Beispiel möchte ich "Motor" finden. Wenn ich "en" schreibe, gibt es keine Daten, aber wenn ich "engine" schreibe, werden korrekte Daten angezeigt. Also muss ich auch daran arbeiten. Ich hoffe du verstehst was ich machen möchte.

Antwort

2

Ich habe eine Lösung gefunden!

sensor in sensors filter: { group: group.id } | filter: searchFilter() 

Und:

$scope.search = ''; 
$scope.searchFilter = function() { 
    return function (p) { 
     if ($scope.search!='') { 
      for (var i in p) { 
       var re = new RegExp($scope.search, 'i'); // This I've add 
       if (p.name.match(re) || p.description.match(re)) { // This I've change 
        return true; 
       } 
      } 
     } else { 
      return true; 
     } 

    } 
} 
+0

u haben eine unnötige Funktion Wrapper gibt ... –