【问题标题】:Displaying Grails domains in jquery tabs在 jquery 选项卡中显示 Grails 域
【发布时间】:2013-01-22 21:25:21
【问题描述】:

在 JQuery UI 选项卡中显示来自 Grails 数据库的数据的最佳方式是什么?我想要的是有一个选项卡界面,每个选项卡上都有一个来自不同域的记录列表。例如,Tab1 显示来自 Domain1 的记录列表,Tab2 显示来自 Domain2 的记录列表,等等。

我已设置并运行 JQuery UI 选项卡界面,目前正在使用 createLink 从控制器调用方法以返回相应域的模型。选项卡如下所示:

<div id="tabs">
    <ul>
        <li><a href="${createLink(action: 'listHardware')}">Hardware records</a></li>
        <li><a href="${createLink(action:'listModel')}">Model records</a></li>
        <li><a href="${createLink(action:'listBuilding')}">Building records</a></li>

    </ul>       
</div>

来自控制器的方法如下所示:

def listHardware() {
    [hardwareList:Hardware.list(), hardwareInstanceTotal:Hardware.count()]      
}

我还尝试使用“render(view:'HardwareList', model:[hardwareList:Hardware.list(), hardwareInstanceTotal:Hardware.count()]”在选项卡中渲染整个 GSP,但是每次选择选项卡时都需要很长时间(至少 5 秒)才能加载,而且一点也不理想,特别是如果每​​个选项卡都需要很长时间。

更新

正如我在下面对 Rimero 的回答中的一个回答中所指出的,我能够使用模板来显示我的域数据表。我还尝试使用标签在每个选项卡上实现分页,但是每次单击其中一个页面查看另一个页面时,都会将我带到选项卡界面之外的完整模板本身。 关于如何格式化标签以使所有内容都保留在标签中的任何想法?

【问题讨论】:

    标签: jquery-ui grails


    【解决方案1】:

    这是我的建议:

    • 例如,您可以使用 index 方法在控制器中一次获取所有内容。
    • 您可以将选项卡内容实现为模板 (g 渲染模板)。每个标签 == 1 个模板。
    • 您可以获取您的域对象 buildingList, 等来自控制器的索引方法。
    • 每个选项卡的 g:render 模板代码可能只需要传递一个地图或一个集合即可进行渲染。

    在这种情况下,您不需要到控制器端点的超链接。您只需将锚点保留在选项卡(div id)上,就像这里的默认示例一样 -> http://jqueryui.com/tabs/

    更新答案

    正如您所说,一次发送所有数据需要很长时间,您可以异步获取它。如果可能,直接为第一个选项卡填充数据。

      1234563 .
    • 使用 JQuery,当 DOM 准备好时,获取当前选项卡,如果您没有急切地获取第一个选项卡的数据,请在忙图像旋转的此时获取它。

    • 一旦你选择了一个新标签,你需要检查数据是否已经被获取,如果没有,你发送一个 ajax 调用,你的回调函数会在标签 div 容器中填充数据。

    希望对你有帮助。

    【讨论】:

    • Rimero,我不完全确定这是四个不同的建议还是只是步骤,但使用模板听起来是个好主意,我会尝试的。我曾尝试在我的控制器中一次获取所有数据并将一个巨大的模型发送到视图,但这花费的时间太长(大约 8 个域,大约一分钟)。我会看看是否将它加载到模板中然后渲染模板会更好。谢谢!
    • 感谢 Rimero 的更新回答!我想我现在走在正确的轨道上......到目前为止,我所做的只是加载第一个选项卡并将 createLink 用于其他选项卡,以便它调用控制器中的函数以传入模板。此外,所有模板都已经根据需要显示了数据,因此它可以非常快速地加载到选项卡中,并且可以非常快速地在选项卡之间移动。此时我不需要做任何事情来跟踪模板是否已经被传递到它的选项卡(它似乎自动知道?)。太好了,谢谢!
    • 我相信我之前确实接受了答案。我仍在处理分页问题,​​但使用模板是个好主意,并解决了我最初的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多