与vis.js中的事件处理程序不同,manipulation
帮助程序(addNode
等)不提供对network
或其 DOM 容器本身的引用。有没有一种方法可以访问其中一个 ifaddNode
和network
本身应该在不同的范围内定义,以便不能使用闭包?
语境。我正在使用 vis.js 在 TiddlyWiki Classic 中实现一个简单的图形编辑器。奇怪的是一次可以显示多个网络,并且生成它们的 ID,因此它们不会发生冲突,并且用户不必手动设置它们。另一方面,允许用户设置任意操作处理程序是可取的,通常需要获取具有“未知”=随机 id 的网络容器(它可以从网络本身获得network.body.container
,但我未能进入network
内部addNode
)。
PS 我想知道如何修补 vis.js 本身,因为this
insideaddNode
等于似乎完全没用的manipulation
属性。options
看起来在ManipulationSystem.js调用this.options.addNode
应该使用call
: 而不是
this.options.addNode(defaultData, (finalizedData) => {
(第 1156 行)应该是
this.options.addNode.call(this, defaultData, (finalizedData) => {
PPS 在考虑提出分叉/拉取请求时,我发现很清楚将这个上下文添加到addNode
(line 1156), addEdge
(line 1186), editEdge
(1220) 但不是editNode
. 它在哪里?