0

我在 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 文本)“活动”。

这是“活动”的模板描述:

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 }
     }
}), 

我将如何得到它?到目前为止,我可以在图表中搜索的唯一方法是单元格的类型为 basic.Circle(use of get('type') === 'basic.Circle'))。但是对于 Circle 类型,我有两个项目:Activity 和 Workitem。

搜索名称为“Activity”的图形元素有那么难吗?

先感谢您

4

4 回答 4

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 数组将包含您需要的所有元素。

于 2016-09-23T06:24:51.293 回答
1

我通过采用 JSON 格式的元素数据解决了我的问题:

 _.each(this.graph.getElements(), function(element) {


             if(element.attributes.attrs["text"]["text"] == "Activity"){
             //alert("YEAHHHHHH");
             }

            });
于 2016-09-23T07:42:10.287 回答
1

您也可以在元素上使用 api,从形状element.attr('text')返回对象:text{ text: 'Activity', fill: '#ffffff', 'font-size': 10, stroke: '#000000', 'stroke-width': 0 }

于 2016-10-03T14:51:55.460 回答
0

您还可以为您的形状设置一个“id”属性并使用graph.getCell('id_name_goes_here');如果您不介意为每个形状添加一个 id 字段,这将更简单。

于 2018-06-29T04:56:47.590 回答