【发布时间】:2015-09-25 02:45:28
【问题描述】:
paper.on('cell:pointerdown',
function(cellView, evt, x, y) {
for(var i=0; i<menu.length;i++){
if(menu[i].id===cellView.model.id){
graph.addCell(menu[i].clone());
}
}
}
);
在这段代码中,我从元素数组菜单中克隆了一个元素。我希望克隆有一个唯一的id,因为克隆函数应该提供一个新的id,但它具有与克隆元素相同的id。
有人可以解释一下为什么会发生这种情况以及如何正确克隆元素吗?
【问题讨论】:
-
为什么会这样?没有代码这样做。
-
jointjs 的 .clone() 代码可以做到这一点。
-
"clone link.clone() 返回具有相同属性的链接的新实例。" ID是一个属性。 jointjs.com/api#joint.dia.Link:clone
-
还有一个新的ID。一段jointjs源码:
-
"/* 我们不希望克隆的 ID 与原始 ID 相同。*/ * clone.set('id', joint.util.uuid(), { silent: true }); clone.set('嵌入', '');" *修改了评论以显示开始和结束。
标签: javascript jointjs