簡體   English   中英

如何在Angular JS中使用Grails消息代碼標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM