我正在使用fabric 3.4
创建一个提供klass
对象的canvas元素。
说,我将变量a
设置为
a = klass {lockScalingX: true}
我将其克隆到b
并使用一些字典对象更新b
b = a.clone();
b.set({lockMovementY: true});
但这会带来错误,
index.html:3 ERROR TypeError: Cannot read property 'set' of undefined
当我登录a
和b
时。克隆后的b是undefined
。
如何克隆klass
对象并使用set()
更新值?
还是将结构的klass
更改为简单对象?
编辑2
这是控制台日志的屏幕截图。
这是一个阵列,控制台上有键8、9、10的打印内容。我已展开8
以显示键中包含的值。
b[s] = a[s].clone();
console.log('a: ', a); // This consoles the first code in the question.
console.log('b[s]: ', b[s]); // This prints undefined
b[s].set({lockMovementY: true}); // This is giving error. Cannot read property set of undefined.
答案 0 :(得分:0)
我通过调用结构的toObject()
方法解决了这个问题。
我以前使用的是Fabric 1.x,现在正在进行项目改造。将Fabric升级到3.x之后,我开始遇到此问题。创建织物画布时,将返回klass
类型的对象。
const canvas = new fabric.Canvas();
为了将klass
转换为对象,我使用了toObject()
这样的方法
canvas.toObject()
返回简单对象而不是klass
对象。