Fabric.js -как сохранить холст на сервере с настраиваемыми атрибутами

. Я хотел бы иметь возможность сохранить текущее состояние холста в базе данных на стороне сервера -, возможно, в виде строки 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, отправленной сервером, и восстановленный холст также будет включать мои пользовательские атрибуты ? Благодарю.

51
задан kangax 19 November 2013 в 06:27
поделиться