2016-02-20 22 views
5

Mam problemy z konfiguracją niestandardowych tabel danych, które używają wtyczki Buttons.DataTables: Uncaught TypeError: Nie można odczytać właściwości 'buttons' undefined

mogę założyć custom defaultdom układ, który działa:

//vanilla dom (frtip...) 
$.extend($.fn.dataTable.defaults, { 
    dom: 'frtip' 
}); 

Ale gdy próbuję include the "B" character in the dom layout:

// Invoke Buttons plugin (Bfrtip...) 
$.extend($.fn.dataTable.defaults, { 
    dom: 'Bfrtip' 
}); 

... następnie uruchomić DataTables, ten błąd JavaScript jest donosi:

Uncaught TypeError: Cannot read property 'buttons' of undefined

Co robię źle?

Proszę see an example of this at https://jsfiddle.net/jhfrench/at83rcoL/

Odpowiedz

10

I zorientowaliśmy się podczas sporządzania to pytanie. Udostępnianie trudnej odpowiedzi tutaj:

Nie wystarczy tylko dołączyć odpowiednie zasoby JS (jquery.dataTables.min.js, dataTables.buttons.min.js, itp.). You również musiał wywołać plugin przyciski, albo powiększenia domyślnych z elementem button obiektu:

// Invoke Buttons plugin (Bfrtip...) 
$.extend($.fn.dataTable.defaults, { 
    buttons: [ 'copy', 'csv', 'excel' ] 
}); 

Albo można nazwać to co dataTable() inicjalizacji:

$("#table2").DataTable({ 
    buttons: [ 
    'copy', 'excel', 'pdf' 
    ] 
}); 

Zobacz https://jsfiddle.net/jhfrench/at83rcoL/8/ dla examples of both approaches working.

+0

Większość wbudowanych opcji dla 'dom' może być wyłączona, a opcja' dom' nadal może o nich wspomnieć i nie będzie się wysadzać. Niestety dla wtyczki przycisków musisz albo pominąć 'B', jeśli nie używasz przycisków na danej instancji DT, albo upewnić się, że jeśli' B' jest w 'dom', to' przyciski' są zdefiniowane w opcje. To sprawia, że ​​ustawienie domyślnej wartości 'dom' valueoutide, która zawiera problem" B ", ponieważ zakłada, że ​​każda instancja będzie miała przyciski. Następnym razem, gdy będę nad tym pracował, spróbuję ustawić domyślną wartość 'buttons: false' lub' buttons: [] 'i sprawdzić, czy to naprawi. – jinglesthula

+0

Właściwie to po prostu wypróbowałem to naprawdę szybko w powyższym skrzypcach :) Oczywiście, w pierwszym przykładzie skrzypiec (jeden przycisk w/o), jeśli ustawisz 'dom: 'Bfrtip'' i zapewnisz' buttons: [] 'to Prace! ('buttons: false' rzuca wyjątek) – jinglesthula

Powiązane problemy