我需要在javascript函数中管理一个groovy列表对象。 我有一个groovy块进入javascript函数。 我试过这个:
var obj = ${mediaObjectInstanceList as grails.converters.JSON}[index];
和此:
var obj = ${mediaObjectInstanceList.get(index)};
但两者都错了。在第二个中,我将在groovy块中指定“index”int javascript变量。
答案 0 :(得分:1)
你不能以你定义它的方式做到这一点。
尽管如此,有很多可能实现这一目标。
其中一个是定义一个JS变量并用groovy模型值填充它:
var myArray = new Array(
<g:each in="${mediaObjectInstanceList}" var="obj" status="ix">
${status ? ',' : ''} '${obj}'
</g:each>
);
然后你可以使用普通的下标表示法在JS中遍历这个数组:
var someVal = myArray[ index ];
答案 1 :(得分:0)
正如injecteer所说,你做不到。主要是因为:
mediaObjectInstanceList
(仅由您的grails应用程序知道)。两个(主要)解决方案:
生成页面时您不知道索引(请求中没有参数)=&gt;您必须生成整个阵列服务器端(groovy)以在客户端(javascript)可用。
var mediaObjectInstanceListInJS = new Array($ {mediaObjectInstanceList.collect {it as JSON} .join(',')}); var someVal = mediaObjectInstanceListInJS [index];
您已经拥有索引服务器端(请求中包含params)=&gt;你只能在groovy中阻止你选择的对象:
var someVal = $ {mediaObjectInstanceListInJS [params.index] as JSON};