点击修改vis.js数据集中的项目内容

modify item content in vis.js dataset on click

本文关键字:集中 项目 数据集 数据 修改 vis js      更新时间:2023-09-26

我们已经创建了一个包含以下条目的数据集:

var items = new vis.DataSet([
{id: 1, content: 'item 1', start: moment('8:00', "hh:mm"), end: moment('9:00', "hh:mm")},
{id: 2, content: 'item 2', start: moment('9:00', "hh:mm")},
{id: 3, content: 'item 3', start: moment('10:00', "hh:mm")},
{id: 4, content: 'item 4', start: moment('11:00', "hh:mm")}

现在我们想做的是能够点击item1,例如改变它的内容;我尝试使用功能dataset.update:

items.on('*', function (event, properties, senderId) {
   var itemId = timeline.getSelection(); 
 items.update({id: timeline.getSelection(), content: 'updated', start: moment('9:00', "hh:mm")}); 
});

但是我们得到这个错误:

第2项中缺少属性"content"。

我没有测试你的代码片段,但问题可能是"时间轴"。getSelection"返回一个包含id和"项"的数组。更新"只接受单个对象或对象数组作为"data"参数。

解决方案1:您需要循环遍历选择数组,为每个条目创建一个数据对象,并将其传递给"items.update"。

解决方案2:准备一个对象数组,并将数组传递给items.update。

参考:- visjs.org/docs/timeline/index.html#Methods -> getSelection()- http://visjs.org/docs/data/dataset.html#Methods -> update(data [, senderId])