【发布时间】:2012-07-01 15:12:25
【问题描述】:
我希望能够将当前画布的状态保存到服务器端数据库,可能作为 JSON 字符串,然后使用loadFromJSON 恢复它。通常,这很容易使用:
var canvas = new fabric.Canvas();
function saveCanvas() {
// convert canvas to a json string
var json = JSON.stringify( canvas.toJSON() );
// save via xhr
$.post('/save', { json : json }, function(resp){
// do whatever ...
}, 'json');
}
然后
function loadCanvas(json) {
// parse the data into the canvas
canvas.loadFromJSON(json);
// re-render the canvas
canvas.renderAll();
// optional
canvas.calculateOffset();
}
不过,我还使用内置的 Object#set 方法在要添加到画布中的织物对象上设置了一些自定义属性:
// get some item from the canvas
var item = canvas.item(0);
// add misc properties
item.set('wizard', 'gandalf');
item.set('hobbit', 'samwise');
// save current state
saveCanvas();
问题是,当我在服务器端检查请求时,我发现我的自定义属性没有从画布中解析出来并与其他所有内容一起发送。这可能与toObject 方法如何删除对象类中不是默认属性的任何内容有关。解决此问题的好方法是什么,这样我就可以从服务器发送的 JSON 字符串中保存 和 恢复画布,并且恢复的画布还将包括我的自定义属性?谢谢。
【问题讨论】:
标签: database json savechanges fabricjs