Возможно использование stateSaveParams событий и state.save() Метод API.
Нет прямого способа скопировать состояние одной таблицы в другую, вам нужно установить каждое свойство состояния индивидуально. Приведенный ниже код копирует только длину страницы из одной таблицы в другую с помощью $(this).DataTable().page.len(data.length)
.
Вам нужно заменить example1
, example2
и example3
с идентификаторами таблиц (currentTab
, twoWaveTab
и EvolTab
).
var table1 = $('#example1').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var table2 = $('#example2').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var table3 = $('#example3').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var is_save_in_progress = false;
var $tables = $('#example1, #example2, #example3');
$tables
.on('stateSaveParams.dt', function (e, settings, data){
// Save DOM element
var that = this;
// If state saving is not in progress
if(!is_save_in_progress){
is_save_in_progress = true;
// Iterate over all tables
$tables.each(function(index){
// If table is other than the initial table
if(this.id !== that.id){
// Set page length, save state and redraw the table
$(this).DataTable()
.page.len(data.length)
.state.save()
.draw(false);
}
});
// Indicate that state saving is over
is_save_in_progress = false;
}
});
См. this JSFiddle для демонстрации.
У меня возникла проблема при копировании этого кода: ошибка: Uncaught TypeError: Не удается прочитать свойство 'len' undefined –
@YoussefMayoufi, см. [JSFiddle] (http://jsfiddle.net/d32j6bLe/1/) для демонстрация рабочего кода. Измените этот JSFiddle или дайте ссылку на страницу, на которой вы работаете, чтобы проиллюстрировать ошибку, которую вы получаете. –
Я думаю, что проблема в том, что я использую этот плагин в контроллере angularjs, поэтому без загрузки страницы! как я могу решить эту проблему :( –