数据表deferRender不推迟

时间:2016-08-18 19:09:30

标签: javascript jquery datatables

我不明白这个实现有什么问题。请注意我的数据是"空白"因为我计划根据行/列坐标创建单元格。所以我传入一个虚拟数组并返回render()回调中的内容。

您会在控制台日志中注意到它调用createdCell() 100 * 100次...生成的html也同意。



var size = 100
var zeroes = new Uint8Array(size)
var data = _.range(size).map(function() {
  return zeroes
})
var cells = 0
var rows = 0
var config = {
  autoWidth: false,
  paging: false, // Disable Paging                                   
  ordering: true, // Sortable columns                                 
  info: false, // Disable 'showing x of x entries'                 
  data: data,
  deferRender: true,
  processing: true,
  createdRow: function(cell, data, dataIndex) {
    rows += 1
  },
  columnDefs: [{
    targets: _.range(size),
    title: 'Title',
    render: function(data, type, row, meta) {
      return meta.col * meta.row
    },
    createdCell: function(cell, cellData, rowData, rowIndex, colIndex) {
      cells += 1
    },
  }],
}
var dataTable = $('#dashboard-table').DataTable(config)
console.log("Rows: " + rows)
console.log("Cells: " + cells)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.12/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table className="table table-compressed" id="dashboard-table">
</table>
&#13;
&#13;
&#13;

这里也是小提琴:

https://jsfiddle.net/rrauenza/x5nj7qgt/

为什么不推迟创建细胞?

1 个答案:

答案 0 :(得分:2)

啊,我想我知道发生了什么事。 deferRender仅在配置中paging=true时起作用,并推迟其他页面渲染。

Datatables Scroller插件可能更符合我的预期。