Я создаю инструмент администрирования, который манипулирует диаграммами, используя JointsJS + Rappid.Я пытаюсь скопировать элементы вставки с одной бумаги A на другую бумагу B (расположенную на разных вкладках браузера), но сталкиваюсь со следующей проблемой:
- Я могу скопировать и вставить из A в B один наборэлементы (это хорошо)
- Я могу даже вставить его несколько раз (это все еще хорошо)
- , но если я скопирую другой набор элементов из A и попытаюсь вставить его в B, первыйнабор вставлен вместо нового
- Я все еще могу вставлять элементы из A в A, а B в B, но больше не из одного в другой.
Кажется, чтотакое же поведение в демонстрационной версии Kitchen Sink Rappid : если я открою 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 этозаявил, что:
"Кроме того, буфер обмена также может копировать ячейки с одной бумаги и вставлять их в другую. Однако определение целевой бумаги остается на прикладном уровне."
Я не до конца понял второе предложение («Однако ...» до конца).
Я провел мониторинг локального хранилища и обнаружил, что обе бумаги, вероятно, используют одну и ту же запись хранилища, чтоЗаставьте меня думать, что межграфовая вставка управляется.
На этом этапе я пытаюсь выяснить:
- мой код должен выполнять копирование между графами вообще,
- Я делаю что-то не так,
- есть ошибка в Rappid (учитывая, что такое же поведение в официальной демоверсии).
Спасибо за вашу помощь.