12

新しい属性を持つカスタム要素を作成したいのですが、そのようなカスタム要素を作成しましたが、要素に関する情報を保存するために新しい属性が必要です。

joint.shapes.basic.newRect = joint.shapes.basic.Generic.extend({

markup: '<g class="rotatable"><g class="scalable"><rect/></g><text/></g>',

defaults: joint.util.deepSupplement({

    type: 'basic.newRect',
    attrs: {
        'rect': { fill: 'white', stroke: 'black', 'follow-scale': true, width: 80, height: 40 },
        'text': { 'font-size': 14, 'ref-x': .5, 'ref-y': .5, ref: 'rect', 'y-alignment': 'middle', 'x-alignment': 'middle' }
    }

}, joint.shapes.basic.Generic.prototype.defaults)

ありがとう!

4

2 に答える 2

13

typeとの横に新しいプロパティを追加できますattrs。これらは、次のように、要素のデフォルト プロパティになります。

joint.shapes.basic.newRect = joint.shapes.basic.Generic.extend({

markup: '<g class="rotatable"><g class="scalable"><rect/></g><text/></g>',

defaults: joint.util.deepSupplement({

    type: 'basic.newRect',
    attrs: {
        'rect': { fill: 'white', stroke: 'black', 'follow-scale': true, width: 80, height: 40 },
        'text': { 'font-size': 14, 'ref-x': .5, 'ref-y': .5, ref: 'rect', 'y-alignment': 'middle', 'x-alignment': 'middle' }
    },
    mycustom: 'foo'

}, joint.shapes.basic.Generic.prototype.defaults)

後で要素をインスタンス化するときに、その特定の要素にのみプロパティを追加することもできます。

var myNewRect = new joint.shapes.basic.newRect({ position: { x: 1, y: 1 }});
myNewRect.set('mycustom2', 'bar')
myNewRect.get('mycustom') // 'foo'
myNewRect.get('mycustom2') // 'bar'

これらのプロパティはすべて、グラフをシリアル化するときにも考慮されます。

于 2014-05-31T07:18:52.517 に答える
2

提供されている を使用することもできますElement#prophttp://jointjs.com/api#joint.dia.Element:propを参照してください

于 2015-09-04T16:18:50.587 に答える