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

dra*_*mnl 4 angularjs angular-translate

我正在使用Angular Materialangular-translate.

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

<md-select-label>{{ userLanguage ? userLanguage.chosenLanguage: "Choose language"}}</md-select-label>
Run Code Online (Sandbox Code Playgroud)

如果未选择任何选项,则显示选择语言,否则显示所选选项.

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

{{ 'LB_CHOOSE_LANGUAGE' | translate }}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过以下方式嵌套2个表达式(三元运算符+角度转换过滤器)时:

{{ userLanguage ? userLanguage.chosenLanguage : {{ 'LB_CHOOSE_LANGUAGE' | translate }} }}
Run Code Online (Sandbox Code Playgroud)

我的语法无效:

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

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

azi*_*ium 6

Handlebar语法表示JavaScript表达式,或者特定的Angular表达式.使用把手内部的把手没有意义,因为你已经告诉编译器你正在从HTML切换到JavaScript.

话虽如此,你可以在没有内部把手的情况下重写你的表达:

{{ (userLanguage ? userLanguage.chosenLanguage : 'LB_CHOOSE_LANGUAGE') | translate }}
Run Code Online (Sandbox Code Playgroud)