当我向Tabulator添加新行时,我使用一些具有默认值的对象:
var defaults = { id: 11, country_id: 4 };
table.addRow( defaults );
table.addRow( defaults );
但是Tabulator使用此对象进行数据存储。这里所有行都引用相同的数据。因此,当编辑一行时,整个表都会更新。
如何复制:打开JS fiddle并编辑“国家/地区”列
向Tabulator添加行的正确方法是什么?
答案 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 );