Fabric js 从 JSON 加载画布

Sop*_*e D 8 javascript fabricjs

我正在尝试实现保存和加载功能,但是当我尝试将 json 加载到画布中时出现错误。错误消息说“无法读取未定义的属性‘async’”,但我认为 json 输出看起来不错。(我不习惯 JavaScript,所以我不知道问题出在结构上还是在我的代码中..)

这是我的测试用例的 jsFiddle 链接:示例小提琴

到目前为止,保存和加载功能是这样的:

var json = JSON.stringify(canvas);
canvas.clear();
canvas.loadFromJSON(json, function() {
    canvas.renderAll();
});       
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!:)

spc*_*670 8

您可能已经序列化了您的对象,其中一个(或多个)具有自定义属性,或者您完全创建并序列化了一个新的自定义类。在这里查看以更好地了解 Canvas 序列化的规则:http : //fabricjs.com/docs/fabric.Canvas.html#toJSON

尝试使用 reviver 函数 ( http://fabricjs.com/docs/fabric.Canvas.html#loadFromJSON )运行您的代码。

canvas.loadFromJSON(json, function() {
   canvas.renderAll(); 
},function(o,object){
   console.log(o,object)
})
Run Code Online (Sandbox Code Playgroud)

它应该给你一个线索,它在什么负载点失败。根据 loadFromJson 函数的运行方式检查序列化画布,您将找到罪魁祸首。

请参考此答案并阅读评论:https : //stackoverflow.com/a/37545296/2779183