0
我在创建对象时使用了一些自定义属性。例如,在这种情况下,“名称”和“图标”:FabricJS和AngularJS - 复制和粘贴具有自定义属性的对象
$scope.addRoundRect = function() {
var coord = getRandomLeftTop();
var roundrect = (new fabric.Rect({
left: coord.left,
top: coord.top,
fill: '#' + getRandomColor(),
width: 250,
height: 250,
opacity: 1,
scaleX: 1,
scaleY: 1,
angle: 0,
rx: 10,
ry: 10,
strokeWidth: 0,
name: "Rounded Rectangle",
icon: "crop-square"
}));
canvas.add(roundrect).setActiveObject(roundrect);
};
这是我的复制/粘贴功能。正如你可以看到我已经尝试粘贴相关的属性 - 卜我认为他们根本就没有与对象克隆:
function copy() {
canvas.getActiveObject().clone(function (cloned) {
_clipboard = cloned;
});
}
function paste() {
_clipboard.clone(function (clonedObj) {
canvas.discardActiveObject();
clonedObj.set({
left: clonedObj.left + 10,
top: clonedObj.top + 10,
evented: true,
name: clonedObj.name,
icon: clonedObj.icon,
});
if (clonedObj.type === 'activeSelection') {
clonedObj.canvas = canvas;
clonedObj.forEachObject(function (obj) {
canvas.add(obj);
});
clonedObj.setCoords();
} else {
canvas.add(clonedObj);
}
canvas.setActiveObject(clonedObj);
canvas.requestRenderAll();
});
要长话短说:有没有办法克隆并粘贴此属性而不必修改源代码(即在JSO序列化中实现完整的自定义属性)?
- 再次感谢!但在我的控制器(复制粘贴你的代码在那里)使用这个,我粘贴对象时,获取“controller.js:267 Uncaught ReferenceError:customProperties未定义”,而复制和“Uncaught ReferenceError:_clipboard未定义”。 –
- 再次感谢!但在我的控制器(复制粘贴你的代码在那里)使用这个,我粘贴对象时,获取“controller.js:267 Uncaught ReferenceError:customProperties未定义”,而复制和“Uncaught ReferenceError:_clipboard未定义”。 关于粘贴功能中的克隆。看到我们用@asturur解决了这个问题(但是现在我真的完全不确定我应该在那里添加“customProperties”的位置...... 小提琴: https://jsfiddle.net/wta4pdpz/14/ –
- 对不起,我有点劳累过度!我错过了一行代码...... ;-(复制和粘贴正在工作,现在必须检查多个副本(我们的小提琴的解决方案)....谢谢!!! –