0

リストが空の場合、divを非表示にしたい。その理由は DRY であり、データベースを 2 回呼び出さないためです。

変数testInstanceTotalが作成されるのはコントローラーコードです。

class TestController {
    def user = getAuthenticatedUser()
    def userStuff = Alojamiento.findAllByUser(user)     
    [testInstanceList: userStuff, testInstanceTotal: userStuff.size()]
}

これは、呼び出し元と親のビューのコードになります。

<div id="divShowOrHide">                                        
    <g:include controller="test" action="list" />

    <g:if test="${testInstanceTotal == 0}">
        $('#divShowOrHide').hide();                 
    </g:if>                             
</div>  

何が起こっているのかを確認します。次のコードを追加しました。

<%=testInstanceTotal %>
<%=params %>

これはブラウザーに表示されます (注: 呼び出し元の親ビューは index.gsp です)。

 [id:null] 

そのため、含まれているコントローラー アクションのパラメーターは、呼び出し元の親ビューからは利用できません。どうすれば入手できますか?

4

1 に答える 1

0

index.gsp に Java スクリプト コードを記述する代わりに、リスト GSP ページに js コードを記述する必要があると思います。これには応答変数が含まれるからです。

インクルード リストを使用しているため、親 div を非表示にする JS コードを追加すると、その場所にレンダリングされるリスト ページが表示される場合があります。

たとえば、index.gsp では次のようになります。

    <div id="divShowOrHide">                                        
    <g:include controller="test" action="list" />

</div>

そして list.gsp (コントローラーのアクションをレンダリングするページ):

<script>
<g:if test="${testInstanceTotal == 0}">
        $('#divShowOrHide').hide();                 
    </g:if>                             
</script>

リクエスト ページでレスポンスにアクセスする必要がなくなり、div が非表示になります。これが役立つことを願っています。

于 2013-06-25T17:41:58.317 に答える