Fabric.js - como salvar a tela no servidor com atributos personalizados
Gostaria de salvar o estado da tela atual em um banco de dados do lado do servidor, provavelmente como uma string JSON, e depois restaurá-lo comloadFromJSON
. Normalmente, isso é facilmente realizado usando:
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');
}
E depois
function loadCanvas(json) {
// parse the data into the canvas
canvas.loadFromJSON(json);
// re-render the canvas
canvas.renderAll();
// optional
canvas.calculateOffset();
}
No entanto, também estou definindo alguns atributos personalizados nos objetos de malha que estou adicionando à tela usando oObject#set
método:
// 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();
O problema é que, quando eu verifico a solicitação no lado do servidor, vejo que meus atributos personalizados não foram analisados a partir da tela e enviados junto com todo o resto. Isso provavelmente tem a ver com comotoObject
método remove qualquer coisa que não seja um atributo padrão na classe de objeto. Qual seria uma boa maneira de resolver esse problema, de tal forma que poderei salvare restaurar a tela de uma cadeia JSON enviada pelo servidor e a tela restaurada também incluirá meus atributos customizados? obrigado.