如何将新行添加到 Tabulator table?

How to add new rows into Tabulator table?

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

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

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

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

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

我接下来要做的解决方法是:

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 );

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

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