2016-06-01 7 views
2

保存機能とロード機能を実装しようとしていますが、jsonをキャンバスに読み込もうとしているときにエラーが発生します。 エラーメッセージに「未定義のプロパティ 'async'を読み取ることができません」と表示されますが、json出力はうまく見えます。 (私はJavaScriptに慣れていないので、問題は、ファブリックまたは私のコードであれば、私は、分からない...)ファブリックjs JSONからキャンバスをロード

ここ

私のテストケースにjsFiddleのリンクです:Example fiddle

保存し、負荷機能はこれまでのところこれです:

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

ありがとうございました! :)

答えて

3

おそらく、カスタムプロパティを持つオブジェクトのうちの1つ(または複数)でオブジェクトをシリアライズしたか、新しいカスタムクラスを作成してシリアル化したことがあります。 Canvasのシリアル化の規則についてのより良い考えを得るためにここを見てください:http://fabricjs.com/docs/fabric.Canvas.html#toJSON;

リバース機能(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

ねえ:) おかげでお返事。あなたの助けを借りて私のコードを更新しようとしました。(問題は型属性の名前を変更することができないと思われていたようですが)現在は機能していますが、サブクラスの機能はもう動作しません。 私のフィドルを更新しました:[link](https://jsfiddle.net/f3hkynsu/10/) そして私のサブクラスのために作った "saySth"関数はもう働きません。あなたはこの問題について考えていますか? –

関連する問題