【问题标题】:Clone id remains the same as cloned element克隆 id 与克隆元素相同
【发布时间】: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


【解决方案1】:

它会按应有的方式克隆它,您需要为克隆的元素提供另一个 id。像

graph.addCell(menu[i].clone().attr('id', newNumber));

【讨论】:

  • 这不能回答问题。来自jointjs的clone方法应该给一个新的id,而不需要设置新的id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
相关资源
最近更新 更多