Handsontable Dropdown Bug(0.13)

时间:2015-03-25 14:07:28

标签: jquery handsontable

如果我更改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/

这是示例控制台日志。数据数组

  1. 数据
  2. colHeaders
  3. colums(用于下拉列表)
  4. 这是jsfiddle:https://jsfiddle.net/fatluke/ao45uhzn/

1 个答案:

答案 0 :(得分:1)

好的,谢谢你发布了jsfiddle。这是你的问题:

正如您可能知道或不知道的那样,在JS中,当您声明一个数组时,数组中的每个元素都是对象的引用。如果你推动整数,那不是问题,因为你每次都会引用一个新的整数。

但是,在您的解析JSON方法中,您多次将相同的对象引用推送到数据数组。我不知道你为什么要反复推送相同的数据,但如果你想这样做,你需要每次都克隆对象。

发生的事情是每行对原始数据对象具有相同的引用。当您在handsontable中进行修改时,它会修改所有元素指向的唯一对象,从而修改每一行。

同样,一个简单的解决方案是在推送之前克隆对象。否则,你会有这种有趣的行为。

编辑:

为了测试这个(我已经做过并且它有效)只需为你的data数组提供复制粘贴数据,并将JSON方法中的循环更改为data [i]而不是data [0]。您现在可以看到它正常工作。