-1

。ここに私の試行のplukrがありますhttps://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=previewangularjsフィルタ多次元オブジェクトJSON

以下は、私のJSON namesをすべて期待どおりに返します。

<li ng-repeat="item in collection_data">{{navitem.name}}</li> 

は今、私はので、私は、このフィルタ機能

$scope.filterByDisplay = function() { 
    $filter('filter')($scope.collection_data, ['foreign_lang', 'es']); 
} 

を作ったと呼ばれるフィルタのみ、このJSONスニペット

{ 
    "id": "ddb06ba2-6348-4d45-9e63-a6fa3632e5c2", 
    "created_at": "2015-10-12T18:34:15.668Z", 
    "updated_at": "2016-04-14T15:55:37.433Z", 
    "custom_attributes": { 
     "Display Name": "Activos en Español", 
     "foreign_lang": "es", 
     "display_boxes": "false" 
    }, 
    }, 

のよう"foreign_lang": "es",を持っているアイテムの名前を表示したいですそれはこれが好きです。

<li ng-repeat="item in collection_data" | filter: filterByDisplay>{{navitem.name}}</li> 

コンソールエラーは発生しませんでしたが、何も返されませんでした。

どのように適切にのみJSONの値として'foreign_lang', 'es'で項目を返すために、このコレクションをフィルタリングしていますか? (質問が改正されたので)作業例にhttps://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview

+0

[検索入力欄でNGリピートでフィルタリングネストされたオブジェクト](の可能性のある重複http://stackoverflow.com/questions/41743724/filtering-nested-objects-in-ng -repeat-で-検索入力フィールド) – Icarus

答えて

2

3回目の試みを見ることがplunkrを参照してください。フィルター機能を使用して、個々のオブジェクトを個別にチェックし、真理テストに合格したものだけを戻します。

$scope.filterByDisplay = function(value) { 
    return (value.content) 
     && (value.content.custom_attributes) 
     && (value.content.custom_attributes.foreign_lang === "es"); 
} 

Updated Plunk - Using Filter Function

+0

答えとしてマークすることを忘れないでください!ありがとう –