我想通过索引从 JavaScript 访问模型项到 Play 框架模板中:
<script type="text/javascript" charset="utf-8">
window.onload = function()
{
var cl = ${colors.size()};
int i = 0;
for (i=0;i<cl;i++)
{
labels = labels + "${colors.name.get(i).escapeJavaScript().raw()}";
}
}
</script>
我的问题是这个循环抛出异常:
IndexOutOfBoundsException : Index: 12, Size: 4
注释 0:型号 = 颜色。
注1:大小为4。
注意2:如果我使用固定数字而不是变量i
进行测试,这是可以的,但这不是我需要的。
无法理解为什么它不起作用。
最佳答案
您尝试在 Javascript 循环中使用 Groovy,这是错误的。
请记住,您的 Groovy 代码(在 ${} 内)由服务器端的 Play 模板和返回到客户端的 HTML 页面的结果进行评估,而 Javascript 在客户端进行评估(由浏览器而不是您的服务器)。
也许你想做类似的事情:
<script type="text/javascript" charset="utf-8">
window.onload = function()
{
labels = [#{list colors.name}"${_.escapeJavaScript().raw()}"#{if !_isLast},#{/if}#{/list}];
}
如果你不明白它的作用,这仍然是危险的,
更喜欢使用简单的 AJAX 请求和 renderJSON 方法进行动态加载。
关于java - 从 JavaScript 访问列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636142/