2016-11-18 7 views
0

AngularJSフィルタについては、単純なフィルタ(ほとんどの場合、単一フィールドの値)の簡単な例です。カテゴリAngularJS - 複雑なフィルタベース

私がやったのはやや複雑です。

{ 
    "Categoria": "Informática", 
    "Title": "Consultor DBA Oracle", 
    "professionalarea": { 
     "idAreaProfissional": 1, 
     "description": "IT" 
    }, 
    "Horario": "Estágio Profissional" 
}, { 
    "Categoria": "Finanças", 
    "Title": "Gestor de Projeto", 
    "professionalarea": { 
     "idAreaProfissional": 1, 
     "description": "IT" 
    }, 
    "Horario": "Full-time" 
} 

私の目標は私が累積的に、これらのJSONオブジェクトにフィルタの様々な種類を適用することを可能にするフロントエンド・インターフェースを作成することです:あなたは、次のJSONオブジェクトの配列を持っている想像してみてください。

私は次られた一つの例があります。

文字列:文字列は、配列の内容に対して照合に使用されるフィルタの場合

jsfiddle

答えて

0

を多くのオプションがあります。この文字列と一致する配列内の文字列プロパティを持つすべての文字列またはオブジェクトが返されます。これはネストされたオブジェクトのプロパティにも適用されます。述語は、文字列の先頭に!を付けて否定することができます。

例(検索は、単純な検索文字列、全てフィールドに検索され):

ng-repeat="player in filteredPlayers | filter:search" 

オブジェクト:パターンオブジェクトは、アレイに含まれるオブジェクトの特定のプロパティをフィルタリングするために使用することができる。たとえば、{name: "M"、phone: "1"}述部は、プロパティ名に "M"が含まれ、プロパティphoneに "1"を含む項目の配列を返します。オブジェクトの任意のプロパティまたはそのネストされたオブジェクトプロパティとの一致を受け入れるには、特殊なプロパティ名(デフォルトでは$)を使用できます(たとえば{$: "text"}のように)。これは、上で説明した文字列との単純な部分文字列の一致に相当します。 anyPropertyKeyパラメーターを使用して、特殊プロパティー名を上書きすることができます。述語は、文字列の先頭に!を付けて否定することができます。たとえば、{name: "!M"}述部は、プロパティ名が "M"を含まない項目の配列を返します。

例(2特定のフィールドの特定の値を持つをフィルタリング)

ng-repeat="player in filteredPlayers | filter:{Categoria: cat,Title: tit}" 

特殊な$プロパティは、同じレベルの特性と一致する一方名前プロパティは、唯一の同じレベルのプロパティと一致することに注意してくださいまたはもっと深く。例えば。 {name:{first: 'John'、last: 'Doe'}}のような配列アイテムは{name: 'John'}にはマッチしませんが、{$: 'John'}にマッチします。

関数(値、インデックス、配列):述語関数を使用して任意のフィルタを書き込むことができます。この関数は、要素、そのインデックス、および配列全体を引数として配列の各要素に対して呼び出されます。

最終結果は、述部がtrueを戻した要素の配列です。

例(カスタム関数selection()によるフィルタリング)アプリのスクリプトで

ng-repeat="player in filteredPlayers | filter:selection" 

(カスタム関数、いくつかのオプションの値を持つアイテムのみをフィルタリング):

$scope.selection=function(value, index, array){ 
    if (value.Horario == 'Full time' || value.Horario == 'Estágio Profissional'){ 
    return true; 
    } 
    return false; 
} 
+0

私があればリターンを必要とします私のjsonの自動値は私のコードを変更しようとしますが、私はdoesntの仕事を持っているので –

+0

私の例ではjsfidlleはうまく動作しますが、私が試してみると、professionalarea.descriptionは動作しません。 –

+0

このケースでjsfiddleを作成して何が間違っているのか確認できますか? –