2017-12-11 1 views
1

Ich habe eine Anwendung mit vielen Datentabellen, 70+, also benutze ich die Standarderweiterung, um alle allgemeinen Konfigurationseinstellungen zu setzen. Aber ich war nicht in der Lage, einen Weg zu finden, Funktionen in der initComplete auszuführen, wenn eine einzelne dataTable ihre eigene initComplete-Funktion hat.DataTables - Gibt es eine Möglichkeit, initComplete zweimal auszuführen?

Hier ist mein Testcode:

$.extend(true, $.fn.dataTable.defaults, { 
    "sDom": '<"top"i>rt<"bottom"lp><"clear">', 
    "pageLength": 20, 
    "stateSave": false, 
    "bLengthChange": false, 
    "oLanguage": { 
     "sInfo": "" 
    }, 
    initComplete: function() { 
     defaultStuff(); 
    } 
}); 

var sampleTable = $('#example').DataTable({ 
    "pageLength": 10,  
    "paging": true, 
    initComplete: function() { 
     customStuff(); 
    } 
}); 

function defaultStuff() { 
    console.log('Default..'); 
} 

function customStuff() { 
    console.log('Custom..'); 
} 

Wenn dies nur die Funktion benutzerdefinierten ausgeführt wird ausgeführt, während ich mag sowohl die Standard-und benutzerdefinierte Funktion auszuführen.

Antwort

0

Die Einstellungen der einzelnen Datentabellen überschreiben die Standardeinstellungen, weshalb defaultStuff() niemals unter #example aufgerufen wird.

Um dies erreichen Sie den Anruf manuell für die Tabelle in der initComplete machen würde müssen:

var sampleTable = $('#example').DataTable({ 
    pageLength: 10,  
    paging: true, 
    initComplete: function() { 
    defaultStuff(); // add this here too 
    customStuff(); 
    } 
}); 
1

Ich werde vorschlagen, dass Sie für init.dt auf den Tischen zu hören, die zusätzliche Vorbereitung/Code bei der Initialisierung benötigt:

$('#example').on('init.dt', function(e, settings, json) { 
    //api can be retrieved by 
    var api = $('#example').DataTable(); 
    ... 
}) 
Verwandte Themen