2

controller から GSP view に JS Script を送信したいと思います。私は次の試みをします。

コントローラー(Purchase.groovy) :

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

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>

私も試してみます:jQuery.getScript('${flash.script}')代わりに、'${flash.script}' しかし、GSPページは常に2番目のスクリプトをレンダリングします(elseステートメント)

4

2 に答える 2

5

まず、DOM がロードされた後に必ず関数を呼び出してください。あなたはjqueryのように使うことができます

  $( document ).ready(function() {
     call_function();
  });

また、フラッシュや別のアクションへのリダイレクトではなく、JSコードフォームコントローラーをマップとして送信できます。下記参照:

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

 def edit={
   render view: 'someView', model:[customJs: customJs]
}

そしてビューで:

 <g:javascript>
$(function() {

        <%= customJs %>
})

于 2013-05-13T10:45:31.907 に答える
1

flash.scriptここでテストしましたが、動作します。何が起こるかというと、flashオブジェクトは移行用であり、次のリクエストでのみ使用可能になります。ページが にリダイレクトされedit、更新するeditと、フラッシュは表示されなくなります。例:

  • myaction に移動します。
  • フローは編集にリダイレクトされます。
  • ページを更新すると、ようこそが表示されます。
于 2013-05-13T14:23:40.807 に答える