对象的自定义属性在canvas中清除为json

Vig*_*ala 4 javascript json canvas html5-canvas fabricjs

我有一张画布,上面有多个image objects. 每个对象都有一些自定义属性。我需要将此画布作为 json 对象保存到数据库中。我使用以下代码将 canvas 转换为 json。

canvasJson = JSON.stringify(canvas);
Run Code Online (Sandbox Code Playgroud)

转换后,canvasJson不能有任何自定义属性及其值。它只有默认属性和宽度、高度、不透明度等值。

我该如何解决这个问题?请建议一些正确的方法来解决这个问题......

编辑

以下是我的图像对象创建代码,用于在画布中创建图像对象。

var imgObj = new Image();
var imgSrc = $IMAGE_URL;
imgObj.src = imgSrc;
var image = new fabric.Image(imgObj);
    image.set({
        left: 0,
        top: 0,
        angle: 0,
        padding: 0,
        cornersize: 0,
        lockMovementX: true,
        lockMovementY: true,
        lockRotation: true,
        elementId: $elementID,
        elementname: $elementName,
        elementstatus: $elementStatus,
        width: componentImageWidth,
        height: componentImageHeight
    });
    canvas.add(image);
    image.setCoords();
    canvas.renderAll();
    canvas.selection = false;
    canvas.renderAll();
    setObjectAction(image, false);
Run Code Online (Sandbox Code Playgroud)

JSON.stringify(canvas);使用elementId,elementnameelementstatus缺少将画布转换为 json 。但默认属性获取正确。

如何解决这个问题?

小智 6

您可以使用 Fabric 的 canvas.toJson() 或 canvas.toDatalessJSON() 函数,并且可以将自定义属性作为参数包含在内,如下所示:

var json = JSON.stringify(canvas.toDatalessJSON(['elementId','elementname', 'elementstatus']));
Run Code Online (Sandbox Code Playgroud)