0

我的 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 }}

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

4

1 回答 1

1

在这个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>
于 2019-07-22T09:18:33.263 回答