Javascript Handsontable:动态添加下拉列表值

Javascript Handsontable:动态添加下拉列表值,javascript,handsontable,Javascript,Handsontable,我正在使用以下代码向第一行的所有列添加一个下拉列表 var hot = new Handsontable(container, { data: results, colWidths: [200, 200, 200, 200, 200, 200, 200, 200, 200], colHeaders: false, contextMenu: true, cells : function (row, col, p

我正在使用以下代码向第一行的所有列添加一个下拉列表

var hot = new Handsontable(container,
    {
        data: results,
        colWidths: [200, 200, 200, 200, 200, 200, 200, 200, 200],
        colHeaders: false,
        contextMenu: true,
        cells : function (row, col, prop) {
            if (row === 0) {
              this.type = 'dropdown';
              var val = this.instance.getValue();
              if(typeof val != 'undefined') {
                this.source = [val, 'Code', 'Type', 'Color'];
              }
            }
        }
    });
在my cells函数中,我试图将当前单元格值添加到下拉列表中(默认值为代码、类型和颜色)。但是如果用户决定在单元格中输入“Weight”,那么我希望下拉列表包含(“Weight”、“Code”、“Type”和“Color”)

上面的函数确实执行了此操作,但不正确。。。每次调用函数时,添加的值都会被下一个值替换

然后我尝试创建一个列表,将值
val
添加到该列表中,并将
source
设置到该列表中

但我忍不住觉得有更好的方法可以做到这一点

任何提示都将不胜感激


<select ng-repeat="myModel">
 <option value=1>First Selection</option>
 <option value=2>Second Selection</option>
</select>
初选 第二选择
从您的评论中可以看出,您似乎希望将值附加到源代码列表中。因此,我建议如下:

var hot = new Handsontable(container,
    {
    data: results,
    colWidths: [200, 200, 200, 200, 200, 200, 200, 200, 200],
    colHeaders: false,
    contextMenu: true,
    cells : function (row, col, prop) {
        if (row === 0) {
          this.type = 'dropdown';
          var val = this.instance.getValue();
          if(typeof val != 'undefined') {
            this.source.push(val); // to add to the beginning do this.source.unshift(val) instead
          }
        }
    }
});

这样做的目的是将当前值附加到源列表中。这样,下次输入值时,它将被追加而不是替换。

我已经详细介绍了如何在下拉列表中动态添加值。你能稍微解释一下你所说的函数不能正常工作是什么意思吗?它所做的是在每次对任何单元格进行更改时,用每个单元格上的当前值加上其他值替换源(每个单元格行的===0)。你到底想发生什么?下面是一个行为的例子。我们从下拉列表中的以下值开始(“代码”、“类型”和“颜色”)。然后,用户决定将“Code”的单元格值更改为“Weight”,此时下拉列表显示(“Weight”、“Code”、“Type”和“Color”)。现在,如果用户决定将“Weight”更改为“Height”,下拉列表将显示(“Height”、“Code”、“Type”和“Color”)。但我希望它显示(“Height”、“Weight”、“Code”、“Type”和“Color”)。简而言之,我希望在第一行输入的所有值都在下拉列表中。太好了!感谢您的帮助。是否有方法在更改任何其他下拉列表时添加下拉列表的更改数据?我正在尝试更改后的回调,但未成功。是的,您可以发布一个问题并进行更详细的解释吗?您可以按自己的建议执行但是细节可能很棘手,请考虑解释代码的作用以及它如何回答问题。