如何在Tabulator表中添加新行?

时间:2018-12-29 11:51:07

标签: tabulator

当我向Tabulator添加新行时,我使用一些具有默认值的对象:

var defaults =  { id: 11, country_id: 4 };
table.addRow( defaults );
table.addRow( defaults );

但是Tabulator使用此对象进行数据存储。这里所有行都引用相同的数据。因此,当编辑一行时,整个表都会更新。

如何复制:打开JS fiddle并编辑“国家/地区”列

向Tabulator添加行的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

问题是因为对象是通过引用传递的,如果要将同一个对象传递给多行,则需要使用Object.assign函数对其进行深度复制以破坏引用。

var defaults =  { id: 11, country_id: 4 };
table.addRow(Object.assign({}, defaults));
table.addRow(Object.assign({}, defaults));

答案 1 :(得分:0)

作为解决方法,我接下来要做:

var defaults =  { id: 11, country_id: 4 };
var newRow =  {};
for (var attr in defaults) {
  newRow[attr] = defaults[attr];
}
table.addRow( newRow );

newRow =  {};
for (var attr in defaults) {
  newRow[attr] = defaults[attr];
}
table.addRow( newRow );

newRow =  {};
for (var attr in defaults) {
  newRow[attr] = defaults[attr];
}
table.addRow( newRow );