2016-10-18 7 views
0

私は新しい角度です。私は、JSONオブジェクトがあります。anglejsの複数のフィルタ

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

をし、私は2つのプロパティに基づいてフィルタリングする:namespeciality。この検索は、大文字小文字を区別しない部分文字列と一致しますこれを行う方法?次のように私はこれをやっている方法は、動作しない、次のとおりです。

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

doctor.detailsはJSONオブジェクトの配列は、クエリがnameまたはspecialityと照合する(サブ)の文字列です。

+0

ユーザーがテキストボックスに 'query'を入力しません? –

+0

@RaviTejaいいえ、私はしません。あなたはそれを「角度のある道」でやっていくのを助けてくれますか? –

+0

どのように?それは範囲内の単なる変数ですか? –

答えて

0

これは私が考える可能性が最も簡単だったとしてlodashを使用して、それをやった:

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

queryと一致するnamespecialityに基づいてリストをフィルタリングするためにAngularJS filterを書くことができます。

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