我正在构建一些类似厨房的例子,除了我需要能够拥有多个视图。
http://fabricjs.com/kitchensink
名片:正面和背面
在您编辑时,我会定期保存JSON。
如果你想在不重新加载页面的情况下编辑背面(因为我使用的是AngularJS),我该如何擦除当前的画布并重新加载新的JSON呢?
我当前正在加载JSON,您单击change view,我运行canvas.clearContext()
,然后重新加载新的JSON。这并不像我预期的那样工作。
更新
我正在使用一个指令来管理这个画布。当JSON可用时,我正在创建instantiate指令,当我尝试更新它时,无论出于什么原因,都无法工作。
我删除了它,并使指令initiate本身为空,现在我只是通过服务执行loadJson。耶!
发布于 2014-01-17 15:59:40
通常,canvas.loadFromJSON()
会在加载新对象之前清除整个画布。否则,您可以运行canvas.clear();
。
http://fabricjs.com/docs/fabric.Canvas.html#clear
如何加载您的JSON?
像这样的东西应该是有效的:
var json = canvas.toJSON();
canvas.clear();
canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));
加载JSON之后,调用canvas.renderAll()
很重要。在canvas.loadFromJSON(json, callback)
的第二个参数中,您可以定义一个cllback函数,该函数在加载/添加所有对象后调用。
发布于 2019-10-09 19:14:09
我在运行React时遇到了类似的问题,使用canvas.clear()
是不够的-理论上删除了对象,但场景中仍然有一些东西,这是对新加载的对象的干扰,可能是附加到这些删除的对象的事件……无论如何,现在我正在使用canvas.dispose()
在重新加载场景时清除这个画布,问题已经解决了。
你可以使用check the docs。
https://stackoverflow.com/questions/21177934
复制相似问题