在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的答案的一个答案中所提到的,我能够使用模板来显示我的域数据的表格。我也尝试使用标签在每个选项卡上实现分页,但每次单击其中一个页面以查看另一个页面时,它会将我带到选项卡界面之外的完整模板。 有关如何格式化标记以使所有内容都保留在标签内的任何想法吗?
答案 0 :(得分:1)
这是我的建议:
在这种情况下,您不需要指向控制器端点的超链接。你只需保留标签(div id)的锚点,就像这里的默认示例一样 - &gt; http://jqueryui.com/tabs/
更新的答案
正如您所说,一次发送所有数据需要很长时间,您可以异步获取它。如果可能,直接仅为第一个选项卡填充数据。
为每个选项卡创建一个业务方法,将模型作为JSON返回,仅在尚未从服务器检索数据时获取数据(需要保持状态或查看例如选项卡ID是否具有某些DOM节点
使用JQuery,当DOM准备就绪时,获取当前选项卡,如果您没有急切地获取第一个选项卡的数据,请在忙碌图像旋转的时刻获取它。
< / LI>一旦选择了新选项卡,就需要检查数据是否已被提取,如果没有,则发送ajax调用,然后回调函数填充tab div容器中的数据。 / p>
希望它有所帮助。