0

如果列表为空,我想隐藏一个 div。原因是 DRY 而不是两次调用数据库。

它将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

我认为您应该在列表 GSP 页面上编写 js 代码,而不是在 index.gsp 上编写 java 脚本代码,因为这将具有响应变量。

当您使用包含列表时,您可能有一个列表页面,它将在该位置呈现,如果您添加您的 JS 代码,它将隐藏父 div,那么它将起作用。

例如在 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 回答