Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 在jquery选项卡中显示Grails域_Jquery Ui_Grails - Fatal编程技术网

Jquery ui 在jquery选项卡中显示Grails域

Jquery ui 在jquery选项卡中显示Grails域,jquery-ui,grails,Jquery Ui,Grails,在jQueryUI选项卡中显示Grails数据库中的数据的最佳方式是什么?我想要的是有一个选项卡界面,每个选项卡上都有来自不同域的记录列表。例如,Tab1显示来自Domain1的记录列表,Tab2显示来自Domain2的记录列表,等等 我已经设置了jQueryUI选项卡界面并开始工作,目前正在使用createLink从控制器调用该方法以返回相应域的模型。选项卡如下所示: <div id="tabs"> <ul> <li><a hr

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

我已经设置了jQueryUI选项卡界面并开始工作,目前正在使用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(视图:'HardwareList',model:[HardwareList:HardwareList.list(),hardwareInstanceTotal:Hardware.count()]”在选项卡中渲染了整个GSP,但这需要很长的时间(至少5秒)每次选择选项卡时加载,这一点都不理想,特别是如果每个选项卡都需要那么长的时间

更新

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

我的建议如下:

  • 例如,您可以在索引方法中一次获取控制器中的所有内容
  • 您可以将选项卡内容实现为模板 (g渲染模板)。每个选项卡==1个模板
  • 您可以获取域对象buildingList, 从控制器的索引方法等
  • 每个选项卡的g:render模板代码可能只需要传递一个贴图或集合进行渲染
在这种情况下,您不需要指向控制器端点的超链接。您只需像这里的默认示例->中那样将锚定位到选项卡(div id)

更新的答案

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

  • 为每个选项卡创建一个业务方法,该方法将以JSON的形式返回模型,仅当尚未从服务器检索数据时才获取数据(需要保持状态,或者查看选项卡id是否有一些DOM节点)

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

  • 一旦您选择了一个新的选项卡,您就需要检查数据是否已经被提取,如果没有,您将发送一个ajax调用,并且您的回调函数将数据填充到tab div容器中


希望能有所帮助。

Rimero,我不确定这是四个不同的建议还是仅仅是步骤,但使用模板听起来是个好主意,我会试试。我曾尝试在控制器中一次获取所有数据并将一个巨大的模型发送到视图,但时间太长(大约8个域,大约一分钟)。我会看看是否将其加载到模板中,然后呈现模板会更好。谢谢!感谢更新的答案Rimero!我想我现在走对了方向…到目前为止,我所做的只是加载第一个选项卡,并对其他选项卡使用createLink,以便它调用控制器中的函数来传递模板。此外,所有模板已经根据需要显示了数据,因此它加载到选项卡中的速度非常快,在选项卡之间移动也非常快。此时,我不必做任何事情来跟踪模板是否已传递到其选项卡(似乎自动知道?)。这太棒了,谢谢!我相信我之前接受了答案。我仍在处理分页问题,但使用模板是个好主意,解决了我最初的问题。谢谢。