2016-06-01 44 views
2

我想實現保存和加載函數,但是當我嘗試將json加載到畫布中時出現錯誤。 錯誤消息顯示「無法讀取屬性」未定義的異步「,但json輸出看起來不錯,我認爲。 (我不習慣JavaScript,因此我不知道,如果這個問題是在織物或在我的代碼..)Fabric js從JSON加載畫布

這裏是一個的jsfiddle鏈接到我的測試用例:Example fiddle

的保存和加載功能是這樣到目前爲止:

var json = JSON.stringify(canvas); 
canvas.clear(); 
canvas.loadFromJSON(json, function() { 
    canvas.renderAll(); 
});  

感謝您的幫助! :)

回答

3

您可能序列化您的對象與一個(或多個)他們有一個自定義屬性或您創建和序列化一個新的自定義類完全。看看這裏可以更好地瞭解Canvas序列化的規則:http://fabricjs.com/docs/fabric.Canvas.html#toJSON;

嘗試使用reviver函數(http://fabricjs.com/docs/fabric.Canvas.html#loadFromJSON)運行您的代碼。

canvas.loadFromJSON(json, function() { 
    canvas.renderAll(); 
},function(o,object){ 
    console.log(o,object) 
}) 

它應該給你一個線索,在哪個負載點它失敗。根據loadFromJson函數的運行方式檢查你的序列化畫布,你會發現你的罪魁禍首。

請參考這個答案也和閱讀評論:https://stackoverflow.com/a/37545296/2779183

+0

嘿:) 感謝您的回覆。我試圖用你的幫助來更新我的代碼(問題是type-attribute似乎不允許重命名),現在我認爲它的工作,但子類的功能不再工作。 我更新了我的小提琴:[link](https://jsfiddle.net/f3hkynsu/10/) 和我爲我的子類所做的功能「saySth」不再適用。你對這個問題有什麼想法嗎? –