2017-09-27 4 views
0

矩形とテキストのファブリックグループを作成しました。最後に、以下のコードを使用してグループクラスにカスタムプロパティ 'name'を追加しました。
JSON.stringify(canvas)を使用してキャンバスデータをJSONにシリアル化し、Json文字列をjavaに送信し、最後にJson文字列をファイルに保存するカスタムプロパティもファイルに保存されます。ファブリックjs-プロパティを追加してtoObjectメソッドを拡張すると、キャンバスに保存して戻すときに表示されません

var rect1= createRect(104,166,250,15); 


     var text1 = new fabric.Text('hello', { left: rect1.get('left'), top: rect1.get('top'),fontSize: 13 }); 

     var group1=new fabric.Group([rect1,text1]); 

     group1.toObject = (function(toObject) { 
      return function() { 
      return fabric.util.object.extend(toObject.call(this), { 
       name: this.name 
      }); 
      }; 
     })(group1.toObject); 

     canvas.add(group1); 

     group1.name = 'New group'; 

IamはJavaを使用して同じファイルを読み込むと、このcanvas.loadFromJSONようなキャンバスに負荷JSONをしよう(jsonVal)私のカスタムプロパティが表示されません。長方形とテキストを持つJsonグループには、デフォルトのプロパティのみがロードされます。

カスタムプロパティを失うことなくJson文字列をキャンバスに読み込む方法を教えてください。

+0

あなたがテキストやRECTしない、唯一のグループにnameプロパティを追加しました。その他のカスタムプロパティは定義されていません。 – Durga

+0

ええ、私はグループオブジェクトの名前プロパティを追加しました。しかし、一度キャンバスをJsonの文字列に変換して、同じJsonの 文字列をキャンバスに読み込もうとすると、グループに追加したカスタム属性 '名前'が見つかりません。グループのカスタム属性を失うことなくJson文字列をキャンバスに読み込む方法 – Shakthi

答えて

0

Fabricjsのドキュメントによるとhttps://github.com/kangax/fabric.js/wiki/Adding-additional-object-properties-to-serialized-JSON

プロパティは、より具体的な「クラス」のtoObjectメソッドからtoObjectのfabric.Objectの方法や から返されるべきです。

プロパティをtoObjectメソッドのfabric.Objectに追加するか、 のtoObjectメソッドのfabric.Groupにプロパティを追加します。 group1はロード時のJSON文字列内の有効な参照ではないので、group1としてオブジェクトに追加することはできません。

ので、これは動作するはずです(私はそれを試してみました):

fabric.Group.prototype.toObject = (function(toObject) { 
      return function() { 
      return fabric.util.object.extend(toObject.call(this), { 
       name: this.name 
      }); 
      }; 
     })(fabric.Group.prototype.toObject); 
+0

ありがとうありがとう:) mikkaye solution working :) – Shakthi

+0

私はSakthi、答えを受け入れるおかげで助けることができた。 – mikkaye

関連する問題