我在使用fabricjs时遇到了使用canvas的JSON.stringify方法的问题。我在画布,矩形和圆圈上绘制了一些形状,形成了一组包含每个形状的文本。矩形和圆圈具有我动态指定的name属性。然后我使用JSON.stringify(canvas)创建json并将其发送到服务器。第一次,json包含每个对象/组的name属性。然后我从服务器加载json并在新画布上绘制它。仍然一切都很好,所有的属性都存在,但当我尝试再次使用该方法,以便将更新版本的json发送到服务器(我改变一个圆圈的颜色或类似的东西)新形成的json没有不包含画布中任何对象的name属性。所以我没有删除或添加新对象,我刚刚更改了对象的颜色。我已按照网站上的说明添加了toObject方法的名称,如下所示:
rect.toObject = (function(toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
name: this.name
});
};
})(rect.toObject);
它适用于第一个json创建,但不适用于json的所有后续材料。