我的流程图使用jsPlumb使节点可拖动,稍后允许节点之间的连接。但是,即使只是拖动我也会被错误所阻止。
每当我拖动一个节点时,控制台都会为每个移动的像素记录一条错误消息。该错误为jsPlumb function failed : TypeError: Cannot read property 'el' of undefined
,我设法将其追踪到jsplumb.js
第4919行
在那里,局部变量elId
(代表节点id
的{{1}})被正确设置为div
。但是,在node-1
对象内部,节点将使用键managedElements
保存。因此,在尝试访问node-{{$ctrl.node.id}}
时(在第4919行),找不到(正确的)managedElements[elId].el
作为键,这会提示上述错误。
设置elId
时我无法弄清楚。属于节点managedId
的控制器具有以下代码(.component
服务只返回JsPlump
):
jsPlumbInstance
我还尝试在模板完全链接时设置const NodeController = ['$element', 'JsPlumb', function ($element, JsPlumb) {
const nodeDiv = $element.children('.node');
JsPlumb.draggable(nodeDiv);
}];
方法(我是AngularJS的新手,并且不确定在调用控制器时是否进行了插值):
draggable
每当触发鼠标移动事件时,所有这些片段仍会在控制台中产生错误。
您是否了解我如何解决此错误?我可以以某种方式为const NodeController = ['$element', 'JsPlumb', function ($element, JsPlumb) {
const ctrl = this;
ctrl.$postLink = function () {
const nodeDiv = $element.children('.node');
JsPlumb.draggable(nodeDiv);
};
}];
提供正确的id
吗?
答案 0 :(得分:0)
问题在于$element
没有插入id
,因此带有无效id
的元素被传递到jsPlumb并保存在managedElements
中。
由于我不知道如何访问控制器内的插值元素,我手动重置控制器中元素的id
,然后将元素传递给jsPlumb。