2012-07-02 107 views
4

我在畫布中使用了從fabric.Image擴展的自定義對象,如this answer中所建議。當我從服務器獲取JSON字符串,我試圖將其加載到畫布上時,你得到奇怪的錯誤:FabricJS - 從JSON加載畫布時出錯

var canvas = new fabric.Canvsd(); 

function loadCanvas(resp) { 
    // response object contains a data field 
    // that's essentialy a JSON string 
    var json = JSON.parse(resp.data); 
    canvas.loadFromDatalessJSON(json); 
} 

我得到一個奇怪的打印到控制檯:Cannot call method 'setupState' of undefined (fabric.min.js: 1118)。我試圖用canvas.loadFromJSON(json)替換掉電話,而是發現模糊的SyntaxError: Unexpected token o錯誤。當我在鏈接線程中建議的更改之前使用常規fabric.Image時,此代碼正常工作。我擔心這可能是我在用附加數據擴展favric的Image類時缺少的。思考?

回答

2

經過一番搜索之後,我在fabricjs google group中看到一個similar thread。原來我搞亂了3兩件事:

  1. 我錯過了在不同的位置對我做了另一個自定義對象fromObject()回調定義(我有一對夫婦)。
  2. 我當時正在使用loadFromDatalessJSON(),本來應該只用loadFromJSON()
  3. 我在使用JSON.parse(json)將json字符串解析爲實際的JSON之前,將其傳遞給loadFromJSON()函數,該函數需要json字符串並在內部處理解析。

Derp。