我們在用 fabric.js 操作canvas畫版添加各種形狀/圖片時,有時候會自己添加對應的自定義屬性,當涉及到撤銷/恢復時,要保存之前的canvas的數據以及狀態,此時一般通過toJSON()、toDatalessJSON()、toDatalessObject()等來獲取canvas中的內容進行保存。但是自定義屬性是保存不了的。
轉化成對象時保存自定義屬性
canvas.toJSON(['id']);
canvas 的 toDatalessJSON()
、toDatalessObject()、toJSON()、toObject() 都可以有一個參數 propertiesToIncludeopt
- propertiesToIncludeopt:要包含的屬性選項,類型為 Array;
把需要保存的屬性寫成一個數組的形式在進行轉化保存即可。
const a = canvas.toJSON(['id1', 'id2']); const b = canvas.toDatalessJSON(['id1', 'id2']); const c = canvas.toDatalessObject(['id1', 'id2']); const d = canvas.toObject(['id1', 'id2']);