Canvas 在Fabric.js中重置画布并使用JSON重新加载

Canvas 在Fabric.js中重置画布并使用JSON重新加载,canvas,html5-canvas,fabricjs,Canvas,Html5 Canvas,Fabricjs,我正在构建类似kitchensink示例的东西,只是我需要能够有多个视图 名片: 前后 在编辑时,我会定期保存JSON 如果您希望编辑背面而不重新加载页面(因为我使用的是AngularJS),如何擦除当前画布并重新加载新JSON 我当前正在加载JSON,单击change view,运行canvas.clearContext(),然后重新加载新的JSON。这不是我预期的工作方式 更新 我正在使用一个指令来管理这个画布。当JSON可用时,我正在实例化该指令,当我试图更新它时,无论出于何种原因,都无

我正在构建类似kitchensink示例的东西,只是我需要能够有多个视图

名片: 前后

在编辑时,我会定期保存JSON

如果您希望编辑背面而不重新加载页面(因为我使用的是AngularJS),如何擦除当前画布并重新加载新JSON

我当前正在加载JSON,单击change view,运行
canvas.clearContext()
,然后重新加载新的JSON。这不是我预期的工作方式

更新 我正在使用一个指令来管理这个画布。当JSON可用时,我正在实例化该指令,当我试图更新它时,无论出于何种原因,都无法工作


我删除了它,并使指令initiate本身为空,现在我只是通过服务加载JSON。耶

通常
canvas.loadFromJSON()
会在加载新对象之前清除整个画布。否则可以运行
canvas.clear()

如何加载JSON

像这样的方法应该会奏效:

var json = canvas.toJSON();

canvas.clear();

canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));
加载JSON后,调用
canvas.renderAll()
非常重要。在
canvas.loadFromJSON(json,callback)
的第二个参数中,您可以定义一个cllback函数,该函数在加载/添加所有对象后调用


我在运行React时遇到了类似的问题,使用
canvas.clear()
是不够的-理论上移除的对象,但场景中仍然存在一些东西,这些东西会干扰新加载的对象,可能是附加到这些移除对象的事件。。。无论如何,现在我正在使用
canvas.dispose()
在重新加载场景时清除此画布,问题就消失了


你可以。

我改变了调用
loadFromJSON
的方式,现在它可以完美地工作了。。。我打算在这个周末的某个时候再加上这个。这是inprogress代码,如果有兴趣的话,您是否知道如何为kitchensink应用程序创建angularjs测试?嗨,我也在做同样的事情
canvas.loadFromJSON不是函数
错误,我该怎么办?