根据此question的建议,我使用_data
对象将自定义属性保存在中心位置。
使用set设置属性并不像预期的那样工作。
var opts = {
'width': 200,
'height': 200,
_data:{'key':'oldvalue'}
};
var rect = new fabric.Rect(opts);
rect.set('_data.key', 'newvalue')
//rect.get('_data.key') will still return 'oldvalue'
很明显set使用_data.key作为字符串 - 但还有其他方法吗? 当然我可以做rec._data.key =' newvalue' ... 现在使用这种方法:
var _data = rect.get('_data')
_data.key = 'newvalue'
rect.set('_data', _data)
答案 0 :(得分:0)
您可以在结构对象设置方法中使用任何键名。但是在一个打字稿项目中,编辑器会抱怨,因为Object类的接口没有这些属性。
接口“ Object”扩展了接口“ IObjectOptions”,该接口包括属于结构基础Object的属性。有两个属性(名称和数据)可用于添加自定义属性。名称必须是字符串,数据可以是任何东西。
这是IObjectOptions接口中的代码段:
/**
* Not used by fabric, just for convenience
*/
name?: string;
/**
* Not used by fabric, just for convenience
*/
data?: any;
示例:
rect.set('name', 'myname');
rect.set('data', {
'key1':'value1',
'key2':'value2',
'key3':'value3'
});