如何将 Javascript 代码从 Controller 发送到 GSP 视图?

Abd*_*UMI 2 javascript grails rendering

我想将一些 JS 脚本从控制器发送到 GSP 视图。我做了以下尝试。

控制器(购买.groovy):

 def myaction={
     flash.script= 'jQuery("div#header").show(1000);'
     redirect(action:'edit')
}
Run Code Online (Sandbox Code Playgroud)

purchase/myaction.gsp文件中,我尝试以下代码

<g:if test="${flash.script !=null}">
    <g:javascript>
    $(function() {

            ${flash.script}
    })
   </g:javascript>
</g:if>
<g:else>
 <g:javascript>
    $(function() {

          alert('Welcome')
    })
   </g:javascript>
</g:else>
Run Code Online (Sandbox Code Playgroud)

我也尝试:jQuery.getScript('${flash.script}')而不是'${flash.script}' 然而,GSP 页面总是呈现第二个脚本(else 语句)

Sha*_*iul 5

首先,一定要在dom加载后调用该函数;你可以像使用 jquery

  $( document ).ready(function() {
     call_function();
  });
Run Code Online (Sandbox Code Playgroud)

并且您可以将 js 代码表单控制器作为地图发送,而不是通过 flash 和重定向到另一个动作。见下文:

 def myaction={
    redirect(action:'edit', customJs: 'jQuery("div#header").show(1000);')
 }

 def edit={
   render view: 'someView', model:[customJs: customJs]
}
Run Code Online (Sandbox Code Playgroud)

并认为:

 <g:javascript>
$(function() {

        <%= customJs %>
})
Run Code Online (Sandbox Code Playgroud)