2016-10-18 11 views
0

Ich bin neu in eckigen. Ich habe ein JSON-Objekt:mehrere Filter in angularjs

[ 
    { 
    "id": 1, 
    "name": "name1", 
    "speciality": "speciality1", 
    "address": "address1", 
    "phoneNumber": 9999999999 
    }, 
    { 
    "id": 2, 
    "name": "name2", 
    "speciality": "speciality2", 
    "address": "address2", 
    "phoneNumber": 9999999999 
    }, 
... 
] 

und ich möchte auf zwei Eigenschaften filtern basiert: name und speciality. Diese Suche entspricht der insensitiven Teilzeichenfolge. Wie macht man das? Die Art, wie ich dies tue, ist wie folgt, was nicht funktioniert:

$filter('filter')(doctor.details, { $: query }, false, [name, speciality]); 
$filter('filter')(doctor.details, { name: query } || {speciality : query }, false); 

doctor.details ist die JSON-Objekt-Array-Abfrage ist die (Teil-) Zeichenkette mit name oder speciality angepasst werden.

+0

gelangen Benutzer 'query' in einem Textfeld ? –

+0

@RaviTeja nein, ich nicht. kannst du mir helfen, es auf die "eckige Weise" zu machen? –

+0

dann wie? Ist es nur eine Variable auf dem Umfang? –

Antwort

0

Hat es lodash mit, da dies die einfachste war ich denken konnte:

_.union($filter('filter')(doctor.details, { name: query }), $filter('filter')(doctor.details, { speciality: query })); 
0

Sie können eine AngularJS filter, um herauszufiltern die Liste basierend auf query passende name und speciality Eigenschaften schreiben.

app.filter('filterDetails', function() { 
    return function(details, query) { 

    var filteredDetails = []; 
    filteredDetails = details.filter(function(obj) { 
     // look whether query is substring of name or speciality 
     if (~obj.name.indexOf(query) || ~obj.speciality.indexOf(query)) { 
     return obj; 
     } 
    }) 
    // finally return filtered array 
    return filteredDetails; 
    }; 
}); 

HTML

Query : 
    <input type="text" ng-model="query" /> 

    <ul> 
    <li ng-repeat="detail in doctor.details | filterDetails:query"> 
     {{ detail }} 
    </li> 
    </ul> 

Plunker