3

我对与 Nette 一起工作的 DataTables 有疑问。

我的 JavaScript 代码:

$(document).ready(function(){
  $('.table').DataTables();
});

HTML网络:

{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。

4

1 回答 1

3

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

于 2016-07-19T20:32:13.750 回答