Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.stringify()无法保存对象ID Fabric JS_Javascript_Canvas_Fabricjs - Fatal编程技术网

Javascript JSON.stringify()无法保存对象ID Fabric JS

Javascript JSON.stringify()无法保存对象ID Fabric JS,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,我正在为组对象设置id属性 group.id = "N"; canvas.add(group); canvas.renderAll(); 现在,当我使用 JSON.stringify(canvas); 然后使用保存的Json重新加载画布 canvas.loadFromJSON(canvas_json , canvas.renderAll.bind(canvas) , function(o , obj) { if(obj.type == 'group') { co

我正在为组对象设置id属性

group.id = "N";
canvas.add(group);
canvas.renderAll();
现在,当我使用

JSON.stringify(canvas);
然后使用保存的Json重新加载画布

canvas.loadFromJSON(canvas_json , canvas.renderAll.bind(canvas) , function(o , obj)
{
    if(obj.type == 'group')
    {
       console.log('OBJ ID -'+obj.id);
    }
});
我得到对象ID-未定义

我检查了一些解决方案,其中一些涉及子类化,但由于我对应用程序相当深入,它对我来说不是最好的解决方案

我试过类似的东西

fabric.Object.prototype.toObject = (function (toObject) {
return function () {
    return fabric.util.object.extend(toObject.call(this), {
        id: this.id
    });
};
但这是徒劳的。我是否必须遍历画布中的每个对象并手动将id属性添加到json中?我相信一定有比这更好的解决办法


这方面的任何帮助都会非常有用。

查看
画布上的
对象()上的函数
toObject(propertiesToInclude)
。在使用
JSON.stringify
进行序列化之前,应该使用此方法“导出”画布。该函数允许您提供应包含在序列化中的其他属性的列表

反序列化时,只需使用
revivier
函数将所需属性从
o
设置为
obj
obj.id=o.id

总而言之:

var canvas, group; // your canvas and group objects
group.id = 'N';
canvas.add(group)
canvas.renderAll();

var canvasJson = JSON.stringify(canvas.toObject(['id']));

canvas.loadFromJSON(canvasJson, canvas.renderAll.bind(canvas), function(jsonObject, fabricObject) {
    // jsonObject is the object as represented in the canvasJson
    // fabricObject is the object that fabric created from this jsonObject
    if (fabricObject.type === 'group') {
        fabricObject.id = jsonObject.id
    }
});

工作得很有魅力!谢谢!