2015-05-18 47 views
4

我正在使用角度材料連同角度翻譯如何在AngularJS的視圖中嵌套表達式?

基本上都是採用AM的時候MD-選擇,我有:

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

這表明如果沒有選中任何選項或選擇的選項,否則選擇的語言

最後我用角轉換翻譯所有的標籤(例如,「語言選擇」多語言)在我的應用程序的看法一樣:

{{ 'LB_CHOOSE_LANGUAGE' | translate }} 

然而,當我試圖巢2倍的表達(三元運算+角平移濾波器)的條件:

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

我得到無效的語法:

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

任何線索如何處理嵌套表達式

+0

你爲什麼不只是使用' {{ 'LB_CHOOSE_LANGUAGE' | translate}}'? – TeoMor

+0

因爲這種方式選擇一個選項時,標籤不會被替換。這是md-option/md-label web組件的工作方式 – dragonmnl

+0

嘗試一下:' {{userLanguage? userLanguage.chosenLanguage:('LB_CHOOSE_LANGUAGE'| translate)}}' –

回答

6

把手語法意味着一個JavaScript表達式,或者是一個具體的Angular expression。在句柄內使用句柄沒有任何意義,因爲你已經告訴編譯器你正在從HTML切換到JavaScript。

話雖這麼說,你可以重寫你的表達沒有內把手:

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

這樣,存儲在'userLanguage.chosenLanguage'中的值將被翻譯,我不知道這是OP想要的東西。 – TeoMor

+0

該解決方案有效。 但是'Nikos Paraskevopoulos和TeoMor的一個更精確,因爲我只翻譯標籤,而不是實際選擇的語言 – dragonmnl

+0

正確,但是這是可以在控制器或過濾器內部解決的問題,具體取決於數據是什麼以及修復它是有意義的。沒有更多的上下文,很難知道,但知道無法嵌套車把仍然很重要。 – azium