通过g:formRemote的onSuccess将模型传递给Javascript函数

时间:2014-04-16 22:33:28

标签: javascript jquery html grails grails-2.3

我想通过" onload()"来调用JS函数。在渲染模板后,或通过" onSuccess()" g:formRemote标记中的回调。在我的主要GSP内部,我有以下内容。此代码对控制器进行回调并设置要传递到模板的模型。

GSP:
<g:formRemote name="ptoReport" url="[controller:'Report', action:'ptoBarChart']" update="barChartDiv">
    <g:submitButton name="pto" value="PTO" class="btn btn-primary"/>
</g:formRemote>

<div id="barChartDiv">
    <g:render template="barChart"/>
</div> 

我的控制器代码如下:

Controller:
def ptoBarChart(){
    Map usersAndPTO = timesheetService.getPTOForAllUsers()
    render(template: 'barChart', model:[points: usersAndPTO])
}

我想在模板加载后立即调用JS函数,但诀窍是传入&#34; usersAndPTO&#34;映射到JS函数。我尝试添加&#34; onLoad =&#34; barChart($ {points})&#34;&#34;到渲染模板,但永远不会被调用。并添加&#34; onSuccess =&#34; barChart(数据)&#34;&#34;到g:formRemote导致我将模板的GSP代码传递给JS函数。

任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

检查一下:

在控制器中我也会将这些点作为json返回,如果你只需要它来为js渲染它只作为json

render(template: 'barChart', model:[points: usersAndPTO,jsonPoints: usersAndPTO as JSON])

这是你的模板_barChart.gsp的底部

...
<g:if test="${jsonPoints}">
<script>

alert("${jsonPoints}");
// you can also pass them to a function from original dom, its available cause this template now is part of original dom
myFreakyFunction("${jsonPoints}");
</script>
</g:if>

当模板加载完成后,它应该提醒! 所以