2012-11-05 161 views
4

在我们的Rails应用程序3.2与机架pjax启用出现以下问题:PJAX /后退按钮破坏的DataTable

  1. 您与数据表中加载槽pjax点击一个链接,一个页面。一切安好。
  2. 你点击antoher链接页面“任何”加载。
  3. 您点击加载数据表页面的后退按钮。但数据表不起作用。

有时会加载2个表(没有数据),有时它只加载旧的数据表。但无法操作数据(搜索,转到第2页等)。它完全是静态的。

该表的数据通过json(服务器端处理)从应用程序的rails部分提供。 我们已经试图摧毁并重建在数据表“pjax:启动”或“pjax:结束”

感谢您的帮助:)

+0

尝试运行在'ready'事件创建表的功能 - 我的意思是简单的网页加载(在'pjax除了创作:启动“或” pjax:end') – Daniel

+0

我遇到这个也是。我在document.ready和pjax上有我的datatables init代码:end,而且我仍然看到问题。 我试着在pjax上移动它:开始,而不是再看到问题,但引入了另一个问题,其中一些数据表根本没有初始化。 – Pash

回答

3

我找到了一个有效的解决方案,而不希望无法预料的问题。

$(document).ready -> 
    initLeagueIndexDataTable() 

$(document).on 'pjax:end', -> 
    initLeagueIndexDataTable() 

initLeagueIndexDataTable : -> 
    if ($('#league_index').length > 0 && !$('#league_index_wrapper').length > 0) 
    $('#league_index').dataTable({ 
     'sPaginationType': 'full_numbers', 
     'bJQueryUI': true, 
     'bProcessing': true, 
     'bServerSide': true, 
     'sAjaxSource': $('#league_index').data('source'), 
     'aoColumnDefs': [ 
     { "bSortable": false, "aTargets": [ 1 ] }, 
     { "bSortable": false, "aTargets": [ 2 ] }, 
     { "bSortable": false, "aTargets": [ 3 ] }, 
     { "bSortable": false, "aTargets": [ 4 ] }, 
     { "bSortable": false, "aTargets": [ 5 ] } 
     ], 
     'bFilter': false, 
     'iDisplayLength': 25, 
     'bDestroy': true 
    })