visjs中的 DatatSet,用于数据的保存,可操作非结构化数据,并可监听数据的变化。
DataSet构造var data = new vis.DataSet([data] [, options])
构造后,可通过 add 、updateOnly 、update 、remove方法操作 data(DataSet) 中数据,使用 clear 方法情况数据集。
例:
// create a DataSet
var options = {};
var data = new vis.DataSet([{ id: 11, label: "Node 2" }], options);
// add items
data.add([
{
id: 1,
text: "item 1",
date: new Date(2013, 6, 20),
group: 1,
first: true,
},
{ id: 2, text: "item 2", date: "2013-06-23", group: 2 }
]);
// 获取所有数据
var item1 = data.get();
console.log("item1", item1);
| Method | Return Type | Description |
|---|---|---|
| add(data [, senderId]) | Id[] | 向 DataSet 添加一项(Object)或多项(Arrary)。当已存在具有相同id的数据时,添加该数据失败。 |
| clear([senderId]) | Id[] | 清除 DataSet 中的所有数据。 该函数返回一个数组,其中包含已删除项目的 id。 |
| distinct(field) | Array | 查找指定字段的所有不同值。 返回一个包含所有不同值的无序数组。 如果数据项不包含指定的字段将被忽略。 |
| flush() | none | Flush queued changes. Only available when the DataSet is configured with the option queue, see section Construction. |
| forEach(callback [, options]) | none | 为数据集中的每个项目执行回调函数。 |
| get([options] [, data]) get(id [,options] [, data]) get(ids [, options] [, data]) | Object | Array | 从 DataSet 中获取单个项目、多个项目或所有项目。当请求单个 id 且未找到时,返回 null。 当请求多个 id 且未找到时,将返回一个包含 null 的数组。 |
| getDataSet() | DataSet | 获取数据集本身。 在 DataView 的情况下,此函数不返回 DataView 连接到的 DataSet。 |
| getIds([options]) | Id[] | 获取所有项目或一组过滤项目的 ID。 |
| map(callback [, options]) | Array | 映射数据集中的每个数据 |
| max(field) | Object | null | 查找指定字段数值最大的项。 如果没有找到项目,或者找到的项目都没有数字值,则返回 null。 |
| min(field) | Object | null | 查找指定字段数值最小的项。 如果没有找到项目,或者找到的项目都没有数字值,则返回 null。 |
| off(event, callback) | none | 取消订阅事件,删除事件侦听器。 |
| on(event, callback) | none | 订阅事件,添加事件监听器。 |
| remove(id [, senderId]) remove(ids [, senderId]) | Id[] | 通过 id 或项目本身删除一个或多个项目。 返回一个包含已删除项目的 id 的数组。 |
| setOptions(options) | none | Set options for the DataSet. Available options:queue Queue data changes (‘add’, ‘update’, ‘remove’) and flush them at once. The queue can be flushed manually by calling DataSet.flush(), or can be flushed after a configured delay or maximum number of entries. When queue is true, a queue is created with default options. When queue is false, an existing queue will be flushed and removed. Options can be specified by providing an object:delay: number The queue will be flushed automatically after an inactivity of this delay in milliseconds. Default value is null.max: number When the queue exceeds the given maximum number of entries, the queue is flushed automatically. Default value is Infinity. |
| update(data [, senderId]) | Id[] | 更新一项或多项现有项目。当一个项目不存在时,它将被创建。返回一个包含已删除项目的 id 的数组。 |
| updateOnly(data [, senderId]) | Id[] | 更新一项或多项现有项目。当项目不存在时,抛出异常。 返回一个包含更新项的 id 的数组。 |
On:监听
DataSet.on(event, callback)
Off:关闭监听
DataSet.off(event, callback)
function (event, properties, senderId) {
// handle the event
});
Add:新增
var addedIds = DataSet.add(data [, senderId])
UpdateOnly:更新
var updatedIds = DataSet.updateOnly(data [, senderId])
Update :更新|新增
var updatedIds = DataSet.update(data [, senderId])
Remove:删除
var removedIds = DataSet.remove(id [, senderId])
Clear:清除
var removedIds = DataSet.clear([senderId])
// create a DataSet
var data = new vis.DataSet();
// 监听触发事件
data.on('*', function (event, properties, senderId) {
console.log('event:', event, 'properties:', properties, 'senderId:', senderId);
});
// 触发 'add' 事件
data.add({ id: 1, text: "item 1 (new)" });
// 触发 'update' 事件
data.updateOnly({ id: 1, text: "item 1 (updated)" });
// 触发 'update' 事件
data.update({ id: 1, text: "item 1 (updated again)" });
// 触发 'add' 事件
data.update({ id: 2, text: "item 2 (new)" });
// 触发 'add' 和 'update' 事件
data.update(
{ id: 1, text: "item 1 (updated once more)" },
{ id: 3, text: "item 3 (new)" }
);
// 触发 'remove' 事件
data.remove(1);
dataset