2016-10-07 2 views
0

レンダリングするオブジェクトの配列があります。私はSVGパーサに追加データを渡したいので、ホバーなどにタイトルを表示することができます。 - 一般的にオブジェクトを識別します。私のコード:fabricJS - 追加データを渡すか、fabric.loadSVGFromStringからIDを取得する

for (var i = 0; i < response.data.items.length; i++) { 

    var currItem = response.data.items[i];  
    fabric.loadSVGFromString(currItem.content, function(objects, options) { 
     var obj = fabric.util.groupSVGElements(objects, options); 
     obj.tooltip = currItem.tooltip; 
     canvas.add(obj); 
     canvas.moveTo(obj, 3); 
     canvas.calcOffset(); 
     canvas.renderAll(); 
    }); 

} 

loadSVGFromStringが非同期されたように(私は仮定)、currItemのデータは無効ツールチップの値が得られ、より速く変化します。

は私が私が作成したオブジェクトを識別し、どのような方法(svgObjectからIDを取得またはパーサーにデータを渡す)すべてのヘルプは

理解されるであろうデータとリンクできるソリューションを必要とします!

答えて

1

ので(私のWebアプリケーションからsnipet)のように、ここで私はデシベル(SVG &カスタムオブジェクト)からの私のオブジェクトを取得し、それらをキャンバス上に一つずつ追加し、enlivenObjects()機能を試してみてください。

result.data.forEach(function (object) { 
           var tmpObject = JSON.parse(object.table_data); 
           console.log("obj id:",tmpObject.objectId); 
           fabric.util.enlivenObjects([tmpObject], function (objects) { 
            var origRenderOnAddRemove = canvas.renderOnAddRemove; 
            canvas.renderOnAddRemove = false; 
            console.log(objects); 
            objects.forEach(function (o) { 
             //custom objects & svgobjects go to background 
             if (o.typeTable == 'svgObject' || o.typeTable == 'customText' || o.typeTable == 'customRect' || o.typeTable == 'customCircle' || o.typeTable == 'customPolygon' || o.typeTable == 'customLine') { 
              canvas.add(o); 
              canvas.sendToBack(o);//send svg στο background 
             } else { 
              canvas.add(o); 
             } 
             //console.log(o); 
            }); 

            canvas.renderOnAddRemove = origRenderOnAddRemove; 
            canvas.renderAll(); 
           }); 
          }); 
+0

有望ですが、JSONの例を投稿できますか? – ShirouWrath

+0

それは非常に大きなjson、特にSVGオブジェクトですが、私はいくつかの文字をトリムしようとします... –

+0

まあ、私はplunkrプロジェクトを作成しました(それは何もしません)、あなたは 'objects.json'を開くことができます私がデータベースから持ってくるオブジェクト:https://plnkr.co/edit/lcxiBJvVGiWgRjzXzqjs?p=info jsonは次のようなオンラインパーサでチェックできます:http://www.jsoneditoronline.org/ –

関連する問題