【发布时间】:2017-02-11 09:17:50
【问题描述】:
我在 fabric.js 中的序列化中遇到了一个奇怪的问题。
我创建了一个具有几个自定义属性的自定义 Group 对象。我已经实现了 toObject() 方法来处理自定义属性。
var customGrpFieldOptions = {
"name":"fabric-custom-grp",
"includeCField1" : true,
"includeCField2" : false,
"includeCField3" : false,
"includeCField4" : true
};
var customGrpObject = new fabric.Group([], customGrpFieldOptions);
customGrpObject.toObject = (function(toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
includeCField1: this.includeCField1,
includeCField2: this.includeCField2,
includeCField3: this.includeCField3,
includeCField4: this.includeCField4
});
};
})(customGrpObject.toObject);
我序列化画布对象以保存它。序列化的 JSON 具有自定义属性。
当我将对象重新加载到画布时,我可以看到该对象具有自定义属性。 但是,当我再次序列化画布时,属性不会被包含在内。
我创建了一个 JSFiddle 来演示这个问题。 https://jsfiddle.net/bbcstar/9x48kk7f/
这里出了什么问题?我错过了什么吗?
任何帮助将不胜感激!
【问题讨论】:
-
有趣!我没有发现任何错误,但我会继续查看结构代码,看看是否还能找到其他任何东西。
-
看起来这是许多像我们这样的人都遇到过的fabricjs 问题——看看这篇文章:github.com/kangax/fabric.js/issues/272 ;] 问题出在对象的克隆上。克隆只采用初始属性,而不是添加了修改的组。
标签: javascript json serialization fabricjs