我有一组对象,它们包含两个属性(title,params)。当我应用以下过滤器时,将搜索所有值以进行匹配。
问题是type.title值没有被翻译,我需要过滤掉翻译的title属性与$select.search
值匹配的数组项
<ui-select-choices repeat="type in codeLists.reportTypes | filter: $select.search">
答案 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.'">