繁体   English   中英

Grails将参数从g:each发送到javascript

[英]Grails Sending parameter from g:each to javascript

我需要做的是显示比表大小允许我显示的更多的信息。 为此,当用户将鼠标悬停在需要查看的行上时,我将打开一个包含所有信息的jQuery对话框。

我遇到的问题是当我将参数从行传递到javascript函数时。 我无法像JSON对象一样使用它

从控制器,我要向视图(gsp)g:each发送一个ArrayList。

def detailList = [[key11:val11, key12,val12],[key21:val21, key22:val22]] //...etc
render (model:[detailList:detailList], view:'show')

在视图中,我调用一个javascript函数来打开对话框,并以此发送“循环”对象“ $ {detail}”

<g:each in="${detailList}" status="i" var="detail">
    <tr class="${(i % 2) == 0 ? 'even' : 'odd'}" onmouseover='openDialog("${detail}")' onmouseout='closeDialog()' >
        <td>${detail.code}</td>                     
        <td>${detail.name}</td>
    </tr>
</g:each>

但是我在javascript函数中收到的是:

{key11=val11, key12=val12}

而JavaScript成功实现JSON.parse()所需的功能是:

{"key11"="val11", "key12"="val12"}

我无法使用正则表达式或splits()或其中任何一种来解决此“ JSON”问题,因为其中一个参数是描述符,我可以接收任何类型的o字符。

还有其他方法可以在javascript中接收对象并使用它,例如:alert(detail.code)?

我知道我可以像这样一一发送参数:

onmouseover='openDialog("${detail.code}", "${detail.name}")'

但这不是主意,对不对? 此外,还有很多参数。

任何想法都会有帮助。 谢谢。

您可以在控制器内将数据编码为JSON ,如下所示:

render (model:[detailList:detailList as JSON], view:'show')

在视图中,您可以将JSON分配给任何JavaScript变量:

<script>
    var myJsDetailList = ${raw(detailList)};
</script>

如果您不想从控制器传递JSON进行查看,则可以使用encodeAsJSON()GSP的数据进行编码:

<g:each in="${detailList}" status="i" var="detail">
   <tr class="${(i % 2) == 0 ? 'even' : 'odd'}" onmouseover='openDialog("${detail.encodeAsJSON()}")' onmouseout='closeDialog()' >
      <td>${detail.code}</td>                     
      <td>${detail.name}</td>
   </tr>
</g:each>

ils子

[英]Grails <g:set tag in javascript

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM