DataTables和Nette;刷新代码段删除了Datatables元素

时间:2016-07-19 20:07:56

标签: javascript jquery datatables nette

我遇到了与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。

1 个答案:

答案 0 :(得分:3)

DataTable是根据$(document).ready()事件上的HTML创建的,该事件在加载页面时发生。如果您在不刷新网页的情况下刷新代码段,则DataTable会丢失,并且由于该事件未再次触发,因此无法重新创建。您需要做的是在处理代码片段刷新的代码末尾添加一个新的$('.table').DataTables();调用(我不熟悉nette,所以我不确定它会在哪里发生)。