【发布时间】:2015-05-18 07:13:10
【问题描述】:
我正在使用 Angular Material 和 angular-translate。
基本上在使用 AM 的 md-select 时我有:
<md-select-label>{{ userLanguage ? userLanguage.chosenLanguage: "Choose language"}}</md-select-label>
如果未选择任何选项,则显示选择语言,否则显示已选择的选项。
最后,我使用 angular-translate 来翻译应用程序视图中的所有标签(例如“选择多种语言”),例如:
{{ 'LB_CHOOSE_LANGUAGE' | translate }}
但是,当我尝试通过以下方式嵌套 2 个表达式(三元运算符 + 角度平移过滤器)时:
{{ userLanguage ? userLanguage.chosenLanguage : {{ 'LB_CHOOSE_LANGUAGE' | translate }} }}
我得到无效的语法:
错误:[$parse:syntax] http://errors.angularjs.org/1.4.0-rc.2/$parse/syntax
关于如何处理嵌套表达式的任何线索?
【问题讨论】:
-
你为什么不直接使用
<md-select-label>{{ 'LB_CHOOSE_LANGUAGE' | translate }}</md-select-label>? -
因为选择选项时,不会替换标签。这就是 md-option/md-label Web 组件的工作原理
-
尝试以下方式:
<md-select-label>{{ userLanguage ? userLanguage.chosenLanguage : ('LB_CHOOSE_LANGUAGE' | translate) }}</md-select-label> -
好吧,你不能像
{{somehing, {{something else}} }}这样嵌套表达式,但也许你可以这样做:userLanguage ? (userLanguage.chosenLanguage) : ('LB_CHOOSE_LANGUAGE' | translate)。作为演示的小提琴:jsfiddle.net/uxpVw/9
标签: angularjs angular-translate