-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
How to set additional properties in all fabric.Objects
Howon Song edited this page Sep 7, 2020
·
2 revisions
You usually add an element to canvas like this:
const text = new fabric.Text(an.text, {
left: 100,
top: 100,
});
canvas.add(text);
Sometimes, you want to add additional properties (e.g. id
) to an element.
const text = new fabric.Text(an.text, {
left: 100,
top: 100,
});
text.id = 'text-1234'
canvas.add(text);
But when you serialize/deserialize, you will notice that this additional property does not persist. That's because Fabric implements a custom toJSON
function that relies on its own toObject
function, for which you must specify which properties must be persisted. Therefore, to persist the additional property (e.g. id
) that you added above, you must override toObject
function of the specific class (e.g. Text
) or the top-level Object
class.
const originalToObject = fabric.Object.prototype.toObject;
const myAdditional = ['id'];
fabric.Object.prototype.toObject = function (additionalProperties) {
return originalToObject.call(this, myAdditional.concat(additionalProperties));
}