0

我想在渲染模板后通过“onload()”函数调用 JS 函数,或者通过 g:formRemote 标记中的“onSuccess()”回调调用 JS 函数。在我的主要 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 函数,但诀窍是将“usersAndPTO”映射传递给 JS 函数。我尝试将 "onLoad="barChart(${points})"" 添加到呈现的模板中,但它永远不会被调用。并将“onSuccess="barChart(data)"” 添加到 g:formRemote 会导致我将模板的 GSP 代码传递给 JS 函数。

非常感谢任何帮助。

4

1 回答 1

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>

并且当模板加载完成时,它应该会发出警报!所以

于 2014-04-16T22:53:36.677 回答