2014-10-20 3 views
0

Я строю DataTable с помощью jquery.dataTables.js версии 1.10.0. Я использую обработку серверов с разбивкой на страницы, и все работает чудесно, кроме одного. Когда я обновляю браузер (Chrome или IE 10), код ajax не выполняется для обновления таблицы. Из-за этого таблица также не освежает. Если я вернусь или перейду с браузером, он отлично работает.Ajax вызов не выполняется в DataTable при обновлении браузера

Есть ли что-то особенное, что нужно сделать, чтобы заставить DataTable перезагрузиться при обновлении браузера?

Вот моя DataTable декларация:

 var dataTable = table.dataTable({ 
      "retrieve": true, 
      "lengthMenu": [ [10, 30, 50, -1], [10, 30, 50, "All"] ], 
      "serverSide": true, 
      "paging": true, 
      "searching":false, 
      "pageLength": 30, 
      "columns": [ { 
      "sTitle": "col1" 
      }, { 
      "sTitle": "col2" 
      } ], 
      "dom": '<"top"if>rt<"bottom"lp><"clear">', 
      "ajax": { 
       // set up input parameters 
       "data": function(data) { 
        var length = table.dataTable().api().page.len(); 
        var url = baseUrl + '/' + data.start + '/' + length; 
        table.dataTable().api().ajax.url(url); 
        draw = data.draw; 
        return {}; 
       }, 
       "url": baseUrl, //will be reset by data function 
       "dataFilter": function(data,type) { 

        var results = {}; 
        .... //reformat the REST response for DataTable 

        return JSON.stringify(results); 
       }, 
       "dataSrc": function(data) { 

        // hide length menu if records are less than minimum display 
        if (data.recordsTotal <= 10) { 
          $('#' + callType + relNcid + '_length').hide(); 
         } 

        // hide page menu if all records fit on this page 
        if (data.recordsTotal <= table.dataTable().api().page.len()) { 
         $('#' + callType + relNcid + '_paginate').hide(); 
        } else { 
         $('#' + callType + relNcid + '_paginate').show(); 
        } 
        table.addClass('table table-condensed'); 
        $anchorScroll(); 
        return transformRelDataForTable(data.data); 
       } 
      } 
     }); 

Этот код выполняется на обновления браузера, однако, когда я ставлю точки останова на функцию «рисовать» или функция «dataFilter» он никогда не ломается.

Я использую Jquery 1.11.0 AngularJS 1.2.13

ответ

0

я нашел и исправил проблему. Он был внешним по отношению к dataTables. Это было причиной молчаливого отказа от доступа к таблице. Мой код:

$('#' + relPosition).dataTable({.....}); 

тихо не удалось, потому что таблица ссылается JQuery еще не существовало, потому что она была частью нг-повтор пункта и Угловое еще не оказал, что узел на DOM. При переходе через код dataTable я заметил, что он замыкает все, потому что таблица не существует (правильно), но было бы очень полезно, чтобы код dataTable генерировал исключение в этом случае. Это спасло бы меня от неприятностей.

Смежные вопросы