javascript - 如何从mxgraph中的子单元格获取父单元格
问题描述
我想从父级删除所有连接到源的边,那么是否有任何函数可以删除从父级连接到子级的所有边,由单元格引用。
如何从 mxgraph 中的子单元格获取父单元格。
我正在尝试使用连接器实现拖放,我正确吗?
mxConnectionHandler.prototype.connect = function(source, target, evt, dropTarget){
// First I'll connect the target and source edges
// Later I'll remove all connected edges from parent to source
}
source.parent.getValue('value')
现在是未定义的。
我需要父引用,以便它也有助于保存到数据库。
我可以看到:mxCell.prototype.getParent = function()
从文档中,但是如何使用它?请用一个小例子来演示。
尝试使用cell.getParent()
还:graph.model.getParent(cell)
但它返回:mxCell {value: undefined, geometry: undefined, style: undefined, parent: mxCell, id: "1", …}
其值为undefined
。我做错了什么或如何完美地获得其父单元格引用?
通过将parentid附加到cellid,我得到了这个工作的唯一方法。并使用数组拆分并从其 id 中获取单元格,但我不乐意这样做,因为当连接多个边时我会有很多工作。所以,我需要最简单的解决方案。
解决方案
首先,让我们考虑以下两个:
1)细胞的孩子:
指向我们感兴趣的单元格的单元格。
代码
function getChildrenOfCell(cell){
if(cell != undefined){
let children = [];
let edges = cell.edges;
if(edges != null){
for(let i = 0; i < edges.length; i++){
if(edges[i].target.value == cell.value){
let cellCopy = edges[i].source.clone();
children.push(cellCopy);
}
}
}
return children;
}
else{
return [];
}
}
2) 单元格的父级:
我们感兴趣的单元格指向的单元格。
代码
function getParentsOfCell(cell){
if(cell != undefined){
let parents = [];
let edges = cell.edges;
if(edges != null){
for(let i = 0; i < edges.length; i++){
if(edges[i].source.value == cell.value){
let cellCopy;
if(!parents.includes(edges[i].target)){
cellCopy = edges[i].target
}
parents.push(cellCopy);
}
}
}
return parents;
}
else{
return [];
}
}
推荐阅读
- caching - 从 Smarty 3 到 Twig 2,如何管理模板的出现?
- c# - 无法在 microsoft docs 上找到对代码示例的引用
- javascript - 我如何保持弹出 div 始终打开,即使在页面刷新/重新加载时,直到用户使用 HTML5 本地存储关闭它
- python - 从列表列表中删除第一个元素,然后是第一个和第二个元素
- java - 如何在android q中创建一个文件夹并将我的应用程序生成的所有文件存储在该文件夹中
- python - Python/Selenium/Chromedriver:脚本只打开一个空白的 Google Chrome 页面
- tree - 关于查找树的最大深度的问题
- sockets - 当我们选择keep-alive连接时如何检查连接是否处于活动状态?
- reactjs - 使用 typehead 提交后清除输入数据
- python - 使用 read_csv 方法读取数据时如何删除数据中的“双引号”?