AngularJS 翻译服务的插值问题

AngularJS interpolation issue with translate service

我的 html 中有这个三元运算符(工作正常)

{{ qp.QP_TRANSFERS === '1' ? qp.QP_TRANSFER_TYPE_NAME + ' transfer' : 'No transfer' }}

我正在使用 json 个对象的翻译服务。这是 en_US.json 文件的示例:

"myquotes": {
"PAGETITLE": "My quotes",
"DESCRIPTION": "List of all your asked quotes",
"packages": {
    "label": {
      "SEARCH": {
        "TITLE": "Package quotes",
        "DESCRIPTION": "Search by any column",
      "QUOTE": "Quote",
      "ADULTS": "Adults",
      "MINORS": "Minors",
      "TRANSFER": "transfer",
      "NOTRANSFER": "No transfer"
      }
    },
  }
}

我是这样使用的:

{{ 'myquotes.packages.label.ADULTS' | translate }}

有没有办法在我的三元示例中使用此服务?

在这个 plunker 中,您有一个工作示例,据我所知,您正在寻找的内容。 基本上,在使用 translate 过滤器之前,您已经使用括号将三元表达式 ( ... ) 包装起来,但我建议您将该逻辑放在控制器的函数中以获得更具可读性的模板:

      <p>{{ ('myquotes.packages.label.SEARCH.' + (qp.QP_TRANSFERS === '1' ? 'TRANSFER' : 'NOTRANSFER')) | translate}}</p>

或:

 <p>{{ getLabel(qp.QP_TRANSFERS) | translate}}</p>

其他选项可能是使用 ng-init 指令将完整的字符串 Key 初始化到一个变量中,然后使用 translate 过滤器针对该变量,如下所示:

<p 
   ng-init="LABEL = 'myquotes.packages.label.SEARCH.' +
                    (qp.QP_TRANSFERS === '1' ? 'TRANSFER' : 'NOTRANSFER')">
  {{ LABEL | translate}}
</p>