AngularJS ui-select - 搜索

时间:2018-01-17 18:42:14

标签: javascript angularjs angular-translate ui-select

我正在使用https://angular-translate.github.io/实现i18n,我也使用ui-select。

当我选择[" FOO"," BAR"]时,我想翻译这些值,我可以:

<ui-select ng-model="myModel">
   <ui-select-match>
     <span ng-bind="$select.selected | translate"></span>
   </ui-select-match>
   <ui-select-choices repeat="item in (myList | filter: $select.search)">
     <span ng-bind="item | translate"></span>
   </ui-select-choices>
</ui-select>

问题是当我想要过滤值时。让我们说我翻译FOO到BANANA和BAR到ORANGE。

如果我输入&#34; BA&#34;,&#34; ORANGE&#34;出现是因为它过滤了[&#34; FOO&#34;,&#34; BAR&#34;],而不是[&#34; BANANA&#34;,&#34; ORANGE&#34;]。

另外,我无法更改列表,因为我想在我的模型上安装FOO和BAR。

如何在搜索值之前过滤 myList 的值进行翻译?

1 个答案:

答案 0 :(得分:1)

编写自定义过滤器可以让您链接过滤器以获得所需的过滤列表:

.filter('myLangFilter', function(translationDict){
  return function(input){
    return input.map(function(cur) { return translationDict[cur]?translationDict[cur]:cur; })
  }
})

然后在自定义过滤器中链接可以执行以下操作:

item in (myList | myLangFilter | filter: $select.search)