2016-02-20 11 views
5

Sto riscontrando problemi nell'impostazione di un dataTable personalizzato che utilizza il plug-in Buttons.DataTable: Uncaught TypeError: Impossibile leggere i "pulsanti" di proprietà di undefined

posso impostare un layout custom defaultdom che funziona:

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

Ma se provo a include the "B" character in the dom layout:

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

... quindi eseguire DataTable, viene segnalato questo errore JavaScript:

Uncaught TypeError: Cannot read property 'buttons' of undefined

Cosa sto sbagliando?

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

risposta

10

ho capito mentre redazione della presente domanda. Condivisione della risposta difficile:

Non è sufficiente includere solo le risorse JS rilevanti (jquery.dataTables.min.js, dataTables.buttons.min.js, ecc.). Si anche devono richiamare il plugin pulsanti da una estendendo le impostazioni predefinite con l'elemento button oggetto:

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

Oppure si può chiamare a dataTable() inizializzazione:

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

Vedi https://jsfiddle.net/jhfrench/at83rcoL/8/ per examples of both approaches working.

+0

La maggior parte delle opzioni predefinite per 'dom' può essere disattivata e l'opzione' dom' può ancora menzionarle e non esploderà. Purtroppo, per il plugin per i pulsanti, devi omettere il 'B' se non stai usando i pulsanti su una determinata istanza DT, o assicurati che se' B' è in 'dom', che i' pulsanti' sono definiti nel opzioni. Ciò rende l'impostazione di un bel valore 'dom' predefinito in tutto il sito che include problematico' B', poiché presuppone che ogni istanza abbia pulsanti. La prossima volta che lavoro su questo, proverò a impostare un default di 'buttons: false' o' buttons: [] 'e vediamo se questo lo risolve. – jinglesthula

+0

In realtà, l'ho appena provato molto velocemente nel suddetto violino :) Abbastanza sicuro, nel primo esempio del violino (quello senza i pulsanti) se si imposta 'dom: 'Bfrtip'' e si forniscono i pulsanti': [] 'it lavori! ('buttons: false' lancia un'eccezione) – jinglesthula

Problemi correlati