2016-04-10 12 views
0

Fabric.JSのテンプレートツールをビルドしています。キャンバスをDatalessJSONにシリアル化してから、DatalessJSONをデシリアライズしてキャンバスに戻すことができました。しかし、JSONがロードされたら、オブジェクトを扱う際に問題が発生しています。JSONをキャンバスに読み込んだ後にオブジェクトを取得するのに問題があります - Fabric JS

function loadTemplate() { 


var template = $('#JSONserial').val(); 
canvas.clear(); 
canvas.loadFromDatalessJSON(template); 
canvas.renderAll(); 

var allObjects = canvas.getObjects(); 

console.log(allObjects); 

だからここで、キャンバスは間違いなく成功しJSONにロードされ、すべてのオブジェクトには何ら問題は表示されません。私はgetObjects機能を試してみたときに、私はJSONロードされたオブジェクトのそれぞれを識別することができるように、私は'name'属性でtoObjects機能を高めてい"[]"

しかし、console.logステートメントが返されますが、私もその限り取得することはできません私はオブジェクトをまったく引き出すことができません。

アイデア?

+0

私はこれを理解したと思います。だから、呼び出すことができないオブジェクトを読み込んだ後わずかな時間がかかるようです。私は 'getObjects()'関数をタイムアウト関数の中にタイムアウト100を入れて置いており、今は動作しているようです。 – Samethingbrah

+0

これは間違った方法です。答えをチェックする – AndreaBogazzi

答えて

0

loadFromDatalessJsonは非同期です。

loadFromDatalessJSON(json, callback, reviver) 

オブジェクトロードの最後にコードを実行するためにコールバックを使用します。

function loadTemplate() { 
var template = $('#JSONserial').val(); 
canvas.clear(); 
var allObjects = []; 
canvas.loadFromDatalessJSON(template, function(){ 
    allObjects = canvas.getObjects(); 
    console.log(allObjects); 
    canvas.renderAll(); 
}); 

}