[英]How to use Grails Message code tag with Angular JS
我有一個加載.GSP模板的自定義指令,即
在我的指令中
template: '/view/pages/dummy.gsp'
在dummy.gsp中,
我有一個如下復選框:
<input type="checkbox" name="orangeFruit"> Orange </input>
現在在這里,而不是使用硬編碼的Orange,我想使用這樣的東西:
<div ng-repeat="thisfruit in fruits">
<input type="checkbox" name="{{thisfruit}}chkbox">
${message(code:'label.{{thisfruit}}')}
</input>
</div>
上面的代碼片段是我的角度模板,在其中我要遍歷水果列表並為每個水果放置復選框。
fruits:["orange","apple","banana"] is the angular JSON object.
其中{{thisfruit}}是Javascript對象,值為橙色。
以下是我的messages.properties文件的外觀:
label.orange=Orange
label.apple=Apple
label.banana=Banana
當我運行上面的消息代碼時,它總是給我“ label.orange”而不是“ orange”。 我在messages.properties文件中有此密鑰,因此應該可以找到它。 當我將label.{{thisfruit}}
替換為label.orange
它會給出正確的值。
任何幫助表示贊賞!
根本不可能做到這一點,這是人們經常困惑的最常見問題。 您基本上是在嘗試使用客戶端JavaScript或角度代碼來修復服務器端GSP或Groovy代碼。
GSP文件是在服務器端而不是瀏覽器上編譯的,因此它不會處理任何像{{thisfruit}}
這樣的棱角代碼,而這些代碼永遠不會在服務器端編譯。
類似地,將GSP編譯為HTML代碼后,它將轉換為HTML代碼,瀏覽器會理解該HTML代碼如何呈現它,然后執行角度代碼。
因此,當它在客戶端渲染時,將沒有可用的代碼,例如${message(code:'label.{{thisfruit}}')}
,因為它已經在渲染之前在服務器端進行了編譯。
因此,您不能在客戶端(角度)代碼中使用服務器端(Grails)消息代碼。
為此,您可以使用一個很棒的客戶端庫來實現角度。 http://angular-translate.github.io/
看看這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.