我有一些元素和mxGraph图/编辑器的PrimeNG树。 我为PrimeNg树定义了拖动处理程序
<p-tree [value]="files" draggableNodes="True" (drag)="onDragStart($event);" ></p-tree>
并尝试将我的数据附加到DataTransfer对象
onDragStart(event){
event.preventDefault();
console.log('Start dragging')
event.dataTransfer.setData("text/plain","s1b1");
}
在MxGraph中,我注册了用于拖动和放置事件的处理程序
mxEvent.addListener(container, 'dragover', function(evt)
{
if (container.graph.isEnabled())
{
evt.stopPropagation();
evt.preventDefault();
console.log(mxEvent.getSource(evt));
}
});
mxEvent.addListener(container, 'drop', function(this,evt)
{
if (container.graph.isEnabled())
{
evt.stopPropagation();
evt.preventDefault();
// Gets drop location point for vertex
var pt = mxUtils.convertPoint(container, mxEvent.getClientX(evt), mxEvent.getClientY(evt));
var tr = container.graph.view.translate;
var scale = container.graph.view.scale;
var x = pt.x / scale - tr.x;
var y = pt.y / scale - tr.y;
if (evt.dataTransfer != null){
var items = evt.dataTransfer.items;
for (let item of items)
{
console.log('DATATYPE ' + item.type);
console.log('data ' + evt.dataTransfer.getData("text/plain"));
}
}
// Insert default vertex to check drop working
container.graph.insertVertex(container.graph.getDefaultParent(),null,'label1',x,y,100,100);
}
});
问题在于,evt对象的mxGraph数据传输与PrimeNg Tree生成的数据传输不同。
是否有解决方案可以通过事件将数据从primengtree传递到mxgraph?