2016-02-20 73 views
5

我無法設置使用Buttons插件的自定義數據表。DataTables:Uncaught TypeError:無法讀取未定義的屬性'按鈕'

我可以成立一個custom defaultdom佈局的作品:

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

但是,如果我嘗試include the "B" character in the dom layout

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

...然後運行數據表,報告這個JavaScript錯誤:

Uncaught TypeError: Cannot read property 'buttons' of undefined

我在做什麼錯?

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

回答

10

我想通了在起草這個問題。在這裏共享來之不易的答案:

只包含相關JS資源(jquery.dataTables.min.js,dataTables.buttons.min.js等)是不夠的。您一張由延伸至與該button對象元素默認調用按鈕插件:

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

或者你可以在dataTable()初始化叫它:

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

examples of both approaches workinghttps://jsfiddle.net/jhfrench/at83rcoL/8/

+0

'dom'的大多數內置選項都可以關閉,'dom'選項仍然可以提及它們,它不會炸燬。不幸的是,對於按鈕插件,如果您不使用給定DT實例上的按鈕,或者確保如果'B'在'dom'中,則必須省略'B',選項。這使得在站點範圍內設置一個很好的默認'dom'值,其中包含'B'問題,因爲它假設每個實例都有按鈕。下一次我研究這個時,我會嘗試設置一個默認的'buttons:false'或'buttons:[]',看看是否修復了它。 – jinglesthula

+0

其實,我只是在上面的小提琴中嘗試過它真的很快:)果然,在小提琴的第一個例子中(一個w/o按鈕),如果你設置了'dom:'Bfrtip''並提供'buttons:[]'it作品! ('buttons:false'拋出異常) – jinglesthula

相關問題