JointjS: Как получить атрибуты данного элемента?

У меня есть элемент, определяемый следующим образом:

var m1 = new joint.shapes.devs.Model({
 position: { x: 100, y: 50 },
 size: { width: 190, height: 50 },
 inPorts: ['in'],
 outPorts: ['out'],
 attrs: {
 '.label': { text: 'Model','ref-x': .4, 'ref-y': .25 ,fill: '#fefefe',
 'font-size': 14,
 'font-weight': 'bold', 
 'font-variant': 'small-caps' },
 rect: { fill: '#fefefe'},
 '.inPorts circle': { r:5 ,fill: '#16A085' ,magnet: 'passive', type: 'input'},
 '.outPorts circle': { r:5, fill: '#E74C3C',magnet: 'passive',type: 'output' },
 }

Вопрос в том, как я могу получить атрибут ".label"? Например, мне нужно получить текст "Модель", что мне делать? Если я хочу получить "fill" attr "rect", я могу просто использовать m1.get('attrs'). Rect.fill.

Но я не знаю, КАК ПОЛУЧИТЬ ".label" attr.

2 ответа

Используйте метод attr() для обоих атрибутов настройки и получения их обратно:

m1.attr('.label/text') // 'Model'
m1.attr('.label/text', 'New Model')
m1.attr('.label/text') // 'New Model'

'/' - разделитель путей во вложенный объект attrs.


var rootnode = new joint.shapes.basic.Circle({
 position: { x: 20, y: 220 },
 size: { width: 60, height: 30 },
 attrs: {
 text: { text: 'parent' },
 circle: { fill: 'yellow', hasChildren:false }
 },
 name: 'parent' 
});

graph.addCell(rootnode);

licensed under cc by-sa 3.0 with attribution.