2016-02-20 77 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

相关问题