如果列表为空,我想隐藏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]
因此调用者父视图中没有包含控制器操作的参数。我怎么能得到它们?
答案 0 :(得分:0)
我认为不是在index.gsp上编写java脚本代码,而应该在列表GSP页面上编写js代码,因为它会有响应变量。
当你使用包含列表时,你可能有一个列表页面,它会在那个地方呈现,如果你添加你的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将被隐藏。 希望这会有所帮助。