我有一个加载.GSP模板的自定义指令,即
在我的指示中我有
template: '/view/pages/dummy.gsp'
在dummy.gsp中,
我有一个如下所示的复选框:
<input type="checkbox" name="orangeFruit"> Orange </input>
现在在这里,而不是使用硬编码的橙色,我想使用这样的东西:
<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
当我运行上面的消息代码时,它总是给我&#34; label.orange&#34;而不是&#34; orange&#34;。我在messages.properties文件中有这个键,所以它应该找到它。
当我用label.{{thisfruit}}
替换label.orange
时,它会给出正确的值。
感谢任何帮助!
答案 0 :(得分:0)
根本不可能,这是人们常常感到困惑的最常见问题。您基本上是尝试使用客户端javascript或角度代码修复服务器端GSP或Groovy代码。
GSP文件在服务器端进行编译而不是在浏览器中进行编译,因此它不会像{{thisfruit}}
那样永远不会在服务器端编译任何角度代码。
类似地,当GSP被编译成HTML代码时,它将被转换为HTML代码,浏览器可以理解如何渲染它,并在那里执行角度代码。
因此,当它在客户端呈现时,没有像${message(code:'label.{{thisfruit}}')}
那样的代码可用,因为它在渲染之前已经在服务器端进行了编译。
因此,您无法在客户端(角度)代码中使用服务器端(Grails)消息代码。
那么你可以使用一个非常棒的客户端库来实现角度。 http://angular-translate.github.io/
检查出来。