2017-01-27 7 views
0

私は2つのプロパティ(title、params)を保持するオブジェクトの配列を持っています。次のフィルタを適用すると、すべての値が一致するかどうかが検索されます。ng-repeatで翻訳された値をフィルタリングする方法

問題がtype.title値が翻訳されていないことであると私はタイトルプロパティは$select.search値と一致翻訳配列項目をフィルタリングする必要が

<ui-select-choices repeat="type in codeLists.reportTypes | filter: $select.search"> 
+0

次に、あなたはおそらく、カスタムフィルタを作成する必要があります/ search function – devqon

+0

私はこのためにアプリケーションのワイドフィルターを追加したくないですが、角度フィルターの構文を理解できません。 – Zveratko

+1

あなたの作品はどのように翻訳していますか?あなたの 'type.title'プロパティはどのように見えますか? 'ng-translate'を使いますか? – devqon

答えて

1

あなたは、このための2つのオプションがあります。

1)事前変換すべてのタイトル

$scope.cldeLists.reportTypes.forEach(function(item) { 
    item.translatedTitle = $filter("translate")("docKey." + item.title); 
}); 

その後あなたのフィルタでそれを使用することができます。

<ui-select-choices repeat="type in codeLists.reportTypes | filter: { translatedTitle: $select.search }"> 

2)翻訳されたアイテムを検索するカスタムフィルタを作成します。

app.filter("translatedPropertyFilter", function($filter) { 
    return function(item, property, searchString, prefix) { 
     if (!prefix) prefix = "";    

     return $filter("translate")(prefix + item[property]).indexOf(searchString) > -1; 
    } 
}); 

使用法:

<ui-select-choices repeat="type in codeLists.reportTypes | translatedPropertyFilter:'title':$select.search:'docKey.'"> 
+0

[ここ](http://stackoverflow.com/a/23569180/294426)の構文を理解していますか? – Zveratko

+0

はい、それは普通の 'select'ですが、あなたはオプションを表示するための独自のテンプレートを持った' angular-ui-select'を使っています。この場合、このソリューションを使用することはできません。 – devqon

関連する問題