2016-06-13 9 views
0

leftvalue配列に{name: 'John'、gender: 'male'}のようなJSON情報が含まれています 検索バーで名前と性別の両方で情報をフィルタリングしようとしています。今のところ、フィルタは名前でフィルタリングされています。名前と性別の両方でフィルタリングするにはどうすればよいですか?あなたはフィルタのチェーンを使用することができます私は

scope.leftValue = $filter('filter')(leftValue, { 
        'name': text, 
        'gender': text, 
        }) 

答えて

1

少し混乱していると思います。 2番目の例のようにオブジェクトマップを指定できます。これは、あなたがそうしたときにそれについてdocsの状態です。

オブジェクト:パターンオブジェクトは、配列に含まれる オブジェクトの特定のプロパティをフィルタリングするために使用できます。たとえば、{name:"M", phone:"1"} 述語は、プロパティ名が で「M」、プロパティ電話機に「1」が含まれているアイテムの配列を返します。特別なプロパティ 名前${$:"text"}のように)を使用して、オブジェクトまたはそのネストされたオブジェクトのプロパティの プロパティとの一致を受け入れることができます。これは上記の と記述されている文字列との単純な部分文字列の一致に相当する です。述語は、文字列の先頭に!を付けて否定することができます。 たとえば、{name: "!M"}述部は、 のプロパティー名に"M"が含まれていない項目の配列を戻します。

ここで取り除くべき重要なことは、第2文とandです。一致のためには、あなたの場合の文字列textは、マップに指定されたすべてのプロパティと一致する必要があります。

たとえば、名前がJohnの場合は、maleの検索は一致しません。しかしmaを検索すると、次のレコードを返します:

{ 
    name: 'mark', 
    gender: 'male' 
} 

だけFYIのために、あなたはまた、ビューを介してオブジェクト・マップで検索することができますが、それは同じ制限があります。

ワイルドカード$を使用すると、カンマで区切られたプロパティのリストが得られます。これにより、いずれのプロパティでも一致するorが実行されます。

{ 
    $: 'name,gender' 
} 

ここでキャッチするのは、すべてのプロパティに同じ値がチェックされます。

実際にはfiddle showingです。

他の回答は、何が起きているのか、その理由について説明していないと感じていました。

+0

こんにちは、リンクはフィドルリンクではありません – Zainu

+0

私は '' $ ':テキストを試しましたが、すべてのプロパティをチェックします。私も '$: "名前、性別"':テキストを試しましたが、うまくいきません。 – Zainu

+0

@zainu私は自分のコンピュータにはいないが、私がフィドルリンクを更新していないときには、 – ste2425

0

を試してみました

scope.leftValue = $filter('filter')(leftValue, { 
        'name': text 
        }) 

var result1 = $filter('filter')(leftValue, {'name': text }) 
    var result2 = $filter('filter')(result1 , {'gender': text }) 
+0

返信いただきありがとうございます。しかし、フィルターの連鎖は '名前'または '性別'をチェックできますか? – Zainu

0

私たちはhtmlで行う方がよいと思います。

<tr ng-repeat="player in players | filter:{id: player_id, name:player_name} | filter:ageFilter"> 

$scope.ageFilter = function (player) { 
    return (player.age > $scope.min_age && player.age < $scope.max_age); 
} 

あなたは、彼らがこのリンクで行う方法を確認することができます。
AngularJS multiple filter with custom filter function

+0

リンクの便利な部分を回答の本文に投稿してください。リンクがダウンすると、答えは役に立たなくなります。私は別のSOの質問へのリンクを実現するが、その質問が削除された場合。それにプラスするだけの良い習慣。 – ste2425

+0

ありがとうございます。 –

0

私はあなたがそれをすべてのあなたのHTMLで行うことができますが、コントローラの中で述べて感謝し、ちょうどあなたの選択肢を提供します。

{{yourJSONLinkedToScope | filter: name | filter: gender}} 

ここで、名前と性別は入力ボックスからngモデルです。

関連する問題