如何将新行添加到 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));
当我向 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));