将计算列值绑定到数据表数据模型

时间:2016-04-12 15:50:29

标签: javascript jquery datatables

是否可以将计算值绑定到基础模型的数据表,以便.rows().data()在下面的代码段中包含c列?

var data = [{
  a: 1,
  b: 2
}, {
  a: 2,
  b: 4
}, {
  a: 3,
  b: 8
}, {
  a: 4,
  b: 10
}, ]

var table = $('#dt').DataTable({
  data: data,
  columns: [{
    title: "a",
    data: "a"
  }, {
    title: "b",
    data: "b"
  }, {
    title: "c",
    data: null
  }],
  aoColumnDefs: [{
    aTargets: [2],
    mRender: function(data, type, row) {
      return row.a + row.b;
    }
  }]

});

$('#log').click(function() {
  var data = table.rows().data();
  // first row only
  // logged  -> {a: 1, b: 2} 
  // desired -> {a: 1, b: 2, c: 3}
  console.log(data[0]); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdn.datatables.net/1.10.11/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script>


<table id="dt">
  <thead>
    <tr></tr>
  </thead>
</table>

<button id="log">Log Data</button>

1 个答案:

答案 0 :(得分:2)

您可以为columns.data选项定义一个函数,并创建其他数据属性c

var table = $('#dt').DataTable({
  data: data,
  columns: [{
    title: "a",
    data: "a"
  }, {
    title: "b",
    data: "b"
  }, {
    title: "c",
    data: function(row, type, set, meta){               
       if(!row.hasOwnProperty('c')){
          row.c = row.a + row.b;
       }
       return row.c;
    }
  }]
});

请参阅this jsFiddle以获取代码和演示。