【发布时间】:2015-11-05 08:35:45
【问题描述】:
我使用 Rails 构建了一个网络应用程序。 Web 应用程序的一个页面显示一个使用DataTables API 的表格。这个JSFiddle 展示了我的网络应用程序的示例。
这样做的问题是,当我开始添加大量数据(当前测试数据为 1500 行)时,该表会在运行 javascript 之前先加载每一行,这意味着在Javascript 启动并激活 DataTables。
我想在表格完全填充之前显示一个微调器或处理消息(类似这些行的东西),一旦完成,我想运行我的 javascript 激活 DataTables。
编辑:我的主要问题是我不确定如何在表格加载时使用 Javascript 显示微调器,但在页面加载完成后更改为表格
我的代码如下:
HTML/eRB
<div class="list">
<div class="container">
<div class="row">
<div class="col-md-12">
<table id="app-list-table" class="display table" cellspacing="0">
<thead>
<tr class="table-headers">
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
<th>Header 4</th>
<th>Header 5</th>
<th>Header 6</th>
<th>Header 7</th>
<th>Header 8</th>
<th>Header 9</th>
<th>Header 10</th>
</tr>
</thead>
<tbody>
<%= Server.find_each do |server| %>
<tr>
<td><%= link_to(server.server_name, server_path(server)) %></td>
<td><%= server.application %></td>
<td><%= server.server_role %></td>
<td><%= server.team_contact %></td>
<td><%= server.individual_contact %></td>
<td><%= server.business_owner %></td>
<td><%= server.vendor %></td>
<td><%= server.vendor_contact %></td>
<td><%= link_to("Click Here", server.main_doc) %></td>
<td><%= server.main_win %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
</div>
Javascript
$(document).ready(function() {
var table = $('#app-list-table').DataTable({
"scrollX": true
});
});
如果您还希望我提供任何其他内容,请告诉我。
【问题讨论】:
-
Spin.js 是微调器本身的一个选项。其他一切都取决于您希望它看起来像什么......
-
微调器和它的设计并不重要。我的问题是我不知道在哪里添加 js 代码以在页面加载时显示微调器,然后在完全加载后显示表格......抱歉,我的问题不够清楚跨度>
-
不幸的是,我自己有点业余。但我不认为这是 DataTables 问题......当我的页面加载时,它会在激活 DataTables 之前填充整个 HTML 部分,这会留下未格式化的表格。我认为 DataTables 正在等待 IT。不是相反
-
ETA:数据是如何加载的?是异步的吗?要在加载时显示微调器,您希望在数据之前加载微调器,然后在成功加载后将其移除
-
数据加载如问题所示。它使用嵌入式 ruby 循环遍历每个对象并使用该对象作为参考填充列。我不确定java脚本和ruby是否异步运行。
标签: javascript jquery ruby-on-rails ruby datatables