In this jsfiddle我有一條從子類創建的線(它基本上是一條具有兩個附加屬性的線)。我試圖序列化/反序列化到/從JSON線。我可以序列化沒有問題(包括兩個額外的屬性),但是當我嘗試使用loadFromJSON反序列化時,我得到了Cannot read property 'async' of undefined
異常。面料:從JSON加載子類對象時出錯
取消註釋jsfiddle中的最後一行以獲取錯誤。
我實現了fromObject()
方法,但我不確定它是否正確。這段代碼有什麼問題?
的Javascript:
var canvas = new fabric.Canvas('c');
fabric.PolySegment = fabric.util.createClass(fabric.Line, {
type: 'seg',
initialize: function(points,options) {
options || (options = { });
this.callSuper('initialize', points,options);
this.set('poly', options.poly);
this.set('id', options.id);
},
toObject: function() {
return fabric.util.object.extend(this.callSuper('toObject'), {
poly: this.get('poly'),
id: this.get('id')
});
},
_render: function(ctx) {
this.callSuper('_render', ctx);
}
});
fabric.PolySegment.fromObject = function (object, callback) {
return new fabric.PolySegment(object);
};
fabric.PolySegment.async = true;
var coords1 = [ 10, 10, 100, 100 ];
var seg1 = new fabric.PolySegment(coords1, {
stroke: 'black',
strokeWidth: 6,
originX: 'left',
originY: 'top',
poly: 111111,
id: 222222
});
canvas.add(seg1);
var json = JSON.stringify(canvas);
document.getElementById('t').innerHTML = json;
// uncomment the line below, you'll get an exception
//canvas.loadFromJSON(json);
你說得對,如果我將類型重命名爲'polySegment'我沒有得到錯誤,但是行也不會呈現,[見這個jsfiddle](http://jsfiddle.net/Pgschr/yvcog2te/18 /)。在這個例子中,我從畫布轉換爲JSON並返回。 JSON反序列化後,畫布應顯示原始行。此外,這兩個附加屬性應該在對象中(這也不起作用) – ps0604 2015-04-05 15:45:07
問題出在'fromObject'方法中。我試過[這jsfiddle](http://jsfiddle.net/Pgschr/yvcog2te/20/)並且不起作用。 – ps0604 2015-04-05 16:03:30