1

Ich kann keinen Weg finden, meine Liste nur nach dem Titel zu filtern.Angularjs Filter nach bestimmten Element

Meine Liste ist ein Array von Objekten wie folgt zusammen:

{ 
    "userId": 1, 
    "id": 1, 
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", 
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" 
} 

ich auch ein Eingabefeld in meinem HTML-Datei haben

<input type="search" id="search" class="form-control" ng-model="search.title" placeholder="Search by title"> 

Dieses Feld in meinem Controller beobachtet wird

$scope.$watch('search.title', function(val) { 
     $log.log($filter('filter')(vm.posts, val)); 
    }); 

Und das ist, wo ich meine vm.posts (meine Liste der Objekte, die ich oben erwähnt) nur filtern y nach seinem Titel. Stattdessen wird es durch sein gesamtes Objekt, sowohl body als auch title, gefiltert. Ich weiß, wie man es in HTML-Datei nach Filter: Suche, aber ich habe keine Ahnung, wie man das in einem Controller macht.

Antwort

1

Es kann auf zwei Art und Weise

$scope.$watch('search.title', function(val) { 
    $log.log($filter('filter')(vm.posts, $scope.search); 
}); 

ODER

$scope.$watch('search.title', function(val) { 
    $log.log($filter('filter')(vm.posts, {title: val}); 
}); 
+0

Ehrfürchtig getan werden! Genau das, was ich gesucht habe. Das '{title: val}' funktioniert wie ein Zauber. Habe nicht darüber nachgedacht und das gesamte Internet danach gesucht ... Vielen Dank! – NotAJohnDoe

+0

@NotAJohnDoe np. Froh dir zu helfen. Vielen Dank :-) –