将元素粘贴到Rappid中的另一个图形吗?

时间:2018-12-05 16:16:05

标签: jointjs rappid

我正在构建一个使用JointsJS + Rappid操纵图表的管理工具。我正在尝试将粘贴元素从一张纸A复制到另一张纸B(位于不同的浏览器选项卡上),但是我遇到以下问题:

  • 我可以将一组元素从A复制粘贴到B(很好)
  • 我什至可以粘贴几次(仍然很好)
  • 但是如果我从A复制另一组元素,然后尝试将其粘贴到B中,则会粘贴前一组元素,而不是新的元素
  • 我仍然可以将元素从A粘贴到A,将B粘贴到B,但不能再粘贴到另一个。

Kitchen Sink Rappid demo中,这种行为似乎是相同的:如果我在演示中打开2个选项卡,则会遇到完全相同的问题。您可以通过使用演示应用程序打开2个标签轻松地重现它。

这是我的代码(直接取自Rappid演示):

this.clipboard = new joint.ui.Clipboard();
this.selection = new joint.ui.Selection({
    paper: this.paper,
    handles: App.config.selection.handles,
    collection: new Backbone.Collection
});

this.keyboard = new joint.ui.Keyboard();
this.keyboard.on({
    'ctrl+c': function () {
        // Copy all selected elements and their associated links.
        this.clipboard.copyElements(this.selection.collection, this.graph);
    },
    'ctrl+v': function () {
        var pastedCells = this.clipboard.pasteCells(this.graph, {
            translate: {dx: 20, dy: 20},
            useLocalStorage: true
        });
        var elements = _.filter(pastedCells, function (cell) {
            return cell.isElement();
        });
        // Make sure pasted elements get selected immediately. This makes the UX better as
        // the user can immediately manipulate the pasted elements.
        this.selection.collection.reset(elements);
    },
}

Rappid文档中指出:

  

“此外,剪贴板还能够从一张纸复制单元格,   将它们粘贴到另一个。但是,确定目标   纸留在应用程序层。”

我不完全理解第二句话(“ However ...”结尾)。

我监视了本地存储,发现两篇论文可能使用相同的存储条目,这使我认为图形间粘贴得到了管理。

现阶段,我正在努力寻找是否:

  • 我的代码应该完全执行图形间的复制粘贴,
  • 我做错了事,
  • Rappid中存在一个错误(考虑到此行为在官方演示中是相同的)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我已经从Rappid的工作人员那里得到了答案,这是Rappid中的一个错误,该错误已得到修复。

此修复程序将嵌入到下一版本(可能为2.5)中。