2016-07-09 4 views
0

Ich möchte die Liste der Objekte mit dem Filterobjekt innerhalb des Winkelreglers filtern. Aber es gibt gefilterte Liste. Es sollte zweites Objekt zurückgeben.Filter funktioniert nicht innerhalb des Winkelreglers

Dies ist mein Codebeispiel

app.controller('MainCtrl', function($scope, $filter) { 
    $scope.list=[ 
    { 

    "job_id": 2, 
    "description": "Bid for Job 2", 
    "price": 115, 
    "butler_id": 60, 
    "butler_name": "Butler Client 1", 
    "service_price": 500, 
    "material_price": 900, 
    "date_created": "23 Apr 1993" 
    }, 
    { 

    "job_id": 2, 
    "description": "sfcs", 
    "price": 555, 
    "butler_id": 70, 
    "butler_name": "Butler Client 2", 
    "service_price": 666, 
    "material_price": 666, 
    "date_created": "23 Apr 1993" 
    } 
]; 

    $scope.filter ={"butler_name":"","service_price":"","material_price":"6","price":"","created_date":"","description":""}; 

var getFiltered = $filter('filter')($scope.list, $scope.filter); 
    $scope.filteredBids = getFiltered; 

}); 

Plunker link

+0

Welche Filter, den Sie anwenden wollte? Derzeit wird über fast alle Eigenschaften angewendet. –

+0

Ihr Plünderer funktioniert tatsächlich. zB: '$ scope.filter = {butler_name: 'Butler Client 1'};' – mostruash

+0

Wie Sie sehen können, ist im Filter object eine Eigenschaft leer. Wenn die Eigenschaft leer ist, sollte der Filter nicht auf diese Eigenschaft angewendet werden: – Programmer

Antwort

0

Sie alle Immobilien in Filter passiert und Angular betrachten AND, so dass Sie kein Ergebnis bekommen werden.

Sie müssen Eigenschaften entsprechend Ihrem Filter erstellen.

var filterParams = {}; 
     if ($scope.filter.butler_name.trim() !== "") { 
      filterParams.butler_name = $scope.filter.butler_name; 
     } 
     if ($scope.filter.service_price.trim() !== "") { 
      filterParams.service_price = $scope.filter.service_price; 
     } 
     if ($scope.filter.material_price.trim() !== "") { 
      filterParams.material_price = $scope.filter.material_price; 
     } 
     if ($scope.filter.price.trim() !== "") { 
      filterParams.price = $scope.filter.price; 
     } 
     if ($scope.filter.created_date.trim() !== "") { 
      filterParams.created_date = $scope.filter.created_date; 
     } 
     if ($scope.filter.description.trim() !== "") { 
      filterParams.description = $scope.filter.description; 
     } 
     var getFiltered = $filter('filter')($scope.list, filterParams); 
     $scope.filteredBids = getFiltered; 

Updated link