【问题标题】:angularjs filter not working on i18n textangularjs过滤器不适用于i18n文本
【发布时间】:2016-12-23 12:59:25
【问题描述】:

我正在尝试对具有 i18N 翻译的字段应用过滤器,但不知何故它无法正常工作。这是一个细节: html:

  <div>
        <input class="form-control filter" type="text" data-ng-model="activityFilter">
    </div>
 <tr data-ng-repeat="feature in features | orderBy: orderColumns | filter: activityFilter">

            <td>{{feature.classifier| i18n }}</td> </tr>

i18N 翻译:

瑞典文文件:

  "CULTURE":"Kultur",

英语:

 "CULTURE":"Culture"

现在,当我更改翻译标志时,翻译工作完美。但是当翻译是瑞典语时,如果我尝试搜索“文化”,它会过滤记录但是在页面上显示记录“文化”。就像我尝试搜索“文化”一样,它给了我空的结果。 这是一些屏幕截图。 这是一个真实的记录: [![在此处输入图片描述][1]][1]

这是当我在同一翻译上使用文化搜索时: [![在此处输入图片描述][2]][2]

当我尝试使用 Kulter 搜索时,这就是过滤器在同一页面上给我的结果: [![在此处输入图片描述][3]][3]

谁能解释一下为什么会发生这种情况以及如何解决这个问题。

----------更新屏幕截图------

[![在此处输入图片描述][4]][4]

【问题讨论】:

  • 尝试像这样的过滤器:{CULTURE:activityFilter}

标签: javascript angularjs


【解决方案1】:

过滤器正在“功能”对象上运行。 有关更详细的说明,请参阅https://docs.angularjs.org/api/ng/filter/filter。 基本上,过滤器在对象的所有属性上递归运行。

但是,对象本身只包含翻译key“CULTURE”,所以这就是过滤的内容。

您可以将比较器传递给过滤器(请参阅上面链接的文档)并在比较器中进行翻译。

或者你不使用名为“filter”的默认过滤器,而是编写一个自定义过滤器,例如见https://scotch.io/tutorials/building-custom-angularjs-filters

【讨论】:

    【解决方案2】:

    根据给定的信息,您的映射是:

    "CULTURE":"Kultur"
    

    但是你在截图中搜索了这个词:Kulture。会是这个原因吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2019-09-17
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多