如果我更改1个下拉列表,则所有剩余的行将具有相同的值。
var $container = $(".spreadsheet_div_" + package_id);
$container.handsontable({
data: res,
rowHeaders: true,
minSpareRows: 0,
contextMenu: false,
startRows: qty,
startCols: length,
colHeaders: result.field_headers,
colWidths: result.field_widths,
columns: result.field_type
});
这是一个示例输出图像。 http://postimg.org/image/83e9zoak3/
这是示例控制台日志。数据数组
这是jsfiddle:https://jsfiddle.net/fatluke/ao45uhzn/
答案 0 :(得分:1)
好的,谢谢你发布了jsfiddle。这是你的问题:
正如您可能知道或不知道的那样,在JS中,当您声明一个数组时,数组中的每个元素都是对象的引用。如果你推动整数,那不是问题,因为你每次都会引用一个新的整数。
但是,在您的解析JSON方法中,您多次将相同的对象引用推送到数据数组。我不知道你为什么要反复推送相同的数据,但如果你想这样做,你需要每次都克隆对象。
发生的事情是每行对原始数据对象具有相同的引用。当您在handsontable中进行修改时,它会修改所有元素指向的唯一对象,从而修改每一行。
同样,一个简单的解决方案是在推送之前克隆对象。否则,你会有这种有趣的行为。
编辑:
为了测试这个(我已经做过并且它有效)只需为你的data
数组提供复制粘贴数据,并将JSON方法中的循环更改为data [i]而不是data [0]。您现在可以看到它正常工作。