【问题标题】:Grails g:render a template (or render a div) onClick eventGrails g:渲染模板(或渲染div)onClick事件
【发布时间】:2012-07-18 18:39:49
【问题描述】:

我正在创建一个带有可展开/可折叠列表项的分层列表。当用户单击列表项以展开它时,会弹出一个包含一些信息的表格。现在,grails 正在加载页面时呈现所有表。但是,我只希望在单击列表项时加载表格。我正在使用部分模板来容纳表格 html 并使用

<g:render>

渲染它们。有没有办法转换我要发布的代码,以便 class="list" 的 div 仅在点击时加载?如果没有,有没有办法只在点击时调用 g:render 标签?

<g:each in="${group2List}" var="item">
            <li class="liClosed"><b>
                    ${item}
            </b> <%= Application.findAllWhere((group2): item, (group1): group).size() %>
                <ul>
                    <div class="list">
                        <table id="portfolio">
                            <g:render template="tableHeader" />
                            <g:render template="applicationRow"
                                collection="${Application.findAllWhere((group2): item, (group1): group)}"
                                var="applicationInstance" />
                        </table>
                    </div>
                </ul></li>
            <br />
</g:each>

那么,有没有办法为 li 添加一个 onClick 事件,仅在点击时呈现 div class="list"?或者一种在将这些 g:renders 保留在 ul 中的同时调用这些 g:renders onClick 的方法。

感谢您的帮助!

【问题讨论】:

  • 我之所以尝试这样做,是因为当前的方法非常慢,并且页面需要很长时间才能加载
  • g:render 在服务器端执行,而在客户端(浏览器)上执行 onClick 您将两者混合在一起,我想说清楚您的概念。您可以在单击列表项时使用 ajax 加载列表 div 的内容。

标签: html list templates grails render


【解决方案1】:

就像上面评论的@sudhir 一样,您不能将服务器端内容加载到客户端内容中。一旦页面加载,grails 标签就会被渲染。但是您可以使用 ajax 将数据加载到服务器中,并使用其中的新数据呈现部分模板。这正是你所需要的。您可以查看可能符合您需求的this 链接。

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 2015-01-18
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多