我在Rappid / jointJS中遇到问题
我有stencil.js 4个形状(2个basic.Circle和2个basic.Rect),名称为START(basic.Circle),END(basic.Circle),Activity(basic.Rect)和Workitem(basic.Rect) )和我想在我的所有图表的main.js 中获取名称的基本形状(我的意思是attrs文字)"活动"。
这是"活动"的模板描述。 :
changed(Item item, ItemState state)
我怎么得到它?到目前为止,我可以在我的图表中搜索的唯一方法是单元格是否具有类型basic.Circle(使用new joint.shapes.basic.Rect({ size: { width: 5, height: 3 },
attrs: {
rect: {
rx: 2, ry: 2, width: 50, height: 30,
fill: '#0000FF'
},
text: { text: 'Activity', fill: '#ffffff', 'font-size': 10,
stroke: '#000000', 'stroke-width': 0 }
}
}),
)。但是对于Circle类型我有两个项目:Activity和Workitem。
使用名称搜索图元素是否如此困难:"活动"?
提前谢谢
答案 0 :(得分:2)
您可以从以下方法获取所有元素(链接除外)
var allElement = graph.getElements()
接下来,如果您想获取具有'活动'的元素,请执行以下操作
var activityElements = [];
allElement.forEach(elem => {
var textVal = elem.attributes.attrs.text.text;
if(textVal !== undefined && textVal === 'Activity') {
activityElements.push(elem);
}
});
现在,activityElements数组将包含您需要的所有元素。
答案 1 :(得分:1)
我通过采用JSON格式的元素数据解决了我的问题:
_.each(this.graph.getElements(), function(element) {
if(element.attributes.attrs["text"]["text"] == "Activity"){
//alert("YEAHHHHHH");
}
});
答案 2 :(得分:1)
你也可以使用api on元素,element.attr('text')
从形状中返回text
个对象:{ text: 'Activity', fill: '#ffffff', 'font-size': 10,
stroke: '#000000', 'stroke-width': 0 }
答案 3 :(得分:0)
您还可以为形状设置一个“ id”属性,并使用graph.getCell('id_name_goes_here');
,如果您不介意向每个形状添加id字段,这会更加简单。