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.

questionAnswers(4)

yourAnswerToTheQuestion