如何在 AngularJS' 视图中嵌套表达式?

How to nest expressions in AngularJS' views?

我正在使用 Angular Materialangular-translate.

基本上当使用 AM 的 md-select 我有:

<md-select-label>{{ userLanguage ? userLanguage.chosenLanguage: "Choose language"}}</md-select-label>

显示 选择语言 如果没有选项被 selected 否则 selected 选项。

最后,我使用 angular-translate 来翻译我应用程序视图中的所有标签(例如 "Choose language" 多种语言),例如:

{{ 'LB_CHOOSE_LANGUAGE' | translate }}

但是,当我尝试通过以下方式嵌套 2 个表达式(三元运算符 + angular-翻译过滤器)时:

{{ userLanguage ? userLanguage.chosenLanguage : {{ 'LB_CHOOSE_LANGUAGE' | translate }} }}

我得到无效语法:

Error: [$parse:syntax] http://errors.angularjs.org/1.4.0-rc.2/$parse/syntax

关于如何处理嵌套表达式的任何线索?

Handlebar 语法暗示了一个 JavaScript 表达式,或者更具体地说,一个 Angular expression。在 handlebars 内使用 handlebars 没有意义,因为你已经告诉编译器你要从 HTML 切换到 JavaScript.

也就是说,您可以在没有内部把手的情况下重写您的表达式:

{{ (userLanguage ? userLanguage.chosenLanguage : 'LB_CHOOSE_LANGUAGE') | translate }}