在fabric.js

时间:2018-03-07 18:36:56

标签: fabricjs

根据此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)

1 个答案:

答案 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'
});