我遇到了与Nette一起工作的DataTables。
我的JavaScript代码:
$(document).ready(function(){
$('.table').DataTables();
});
HTML Nette:
{snippet customers}
<table class="table table-hover" id="userTable">
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>Type</th>
</tr>
</thead>
<tbody>
{foreach $customers as $customer}
<tr>
<td>
<a href="{$presenter->link(':Customers:show', array('id' => $customer->id))}" target="_blank">
{$customer->name}
</a>
</td>
<td>{$customer->country}</td>
<td>{$customer->type}</td>
</tr>
{/foreach}
</tbody>
</table>
{/snippet}
它通常有效,但是当刷新Nette代码段时,将删除DataTables元素(页面,顺序等)。如果刷新页面,则返回这些元素。 我正在使用Nette Framework 2.3和Doctrine 2。
答案 0 :(得分:3)
DataTable是根据$(document).ready()
事件上的HTML创建的,该事件在加载页面时发生。如果您在不刷新网页的情况下刷新代码段,则DataTable会丢失,并且由于该事件未再次触发,因此无法重新创建。您需要做的是在处理代码片段刷新的代码末尾添加一个新的$('.table').DataTables();
调用(我不熟悉nette,所以我不确定它会在哪里发生)。