如何过滤ng-repeat中的翻译值

时间:2017-01-27 13:26:49

标签: angularjs angular-filters angular-translate

我有一组对象,它们包含两个属性(title,params)。当我应用以下过滤器时,将搜索所有值以进行匹配。

问题是type.title值没有被翻译,我需要过滤掉翻译的title属性与$select.search值匹配的数组项

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

1 个答案:

答案 0 :(得分: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.'">