Я хочу вызвать функцию JS либо функцией "onload()" после визуализации шаблона, либо посредством обратного вызова "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 сразу после загрузки шаблона, но трюк состоит в том, чтобы передать карту "usersAndPTO" в функцию JS. Я попытался добавить "onLoad =" barChart ($ {points}) "" к визуализированному шаблону, но он никогда не вызывается. И добавление "onSuccess =" barChart (data) "к g: formRemote приводит к тому, что я передаю код GSP для шаблона функции JS.
Любая помощь очень ценится.
Проверь это:
в контроллере я бы вернул точки как 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>
и когда шаблон загружен полностью, он должен предупредить! так