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