2016-09-21 58 views
0

元素的name我有Rappid/jointJS問題圖搜索的元素在jointJS

我在stencil.js 4種形狀(2 basic.Circle和2 basic.Rect)與名稱開頭(basic.Circle ),結束(basic.Circle),活動(basic.Rect)和工作項目(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類型(使用get('type') === 'basic.Circle'))。但使用Circle類型,我有兩個項目:活動和工作項目。

是否很難搜索名稱爲「Activity」的圖形元素?

預先感謝您

+0

你是什麼意思按名字?你是否將它指定爲模型的屬性屬性? –

+0

是@SajithDilshan我有屬性「文本」。你能幫我訪問活動嗎?這是「活動」的模板描述:new joint.shapes.basic.Rect({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} } }), –

回答

1

我採取JSON格式元數據解決我的問題:

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


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

      }); 
+1

JSON.stringify()和JSON.parse()行是多餘的。 'element'變量已經是一個Javascript對象。 –

+0

謝謝@SajithDilshan,但如果(element.attrs [「text」] [「text」] ==「Activity」){ // alert(「YEAHHHHHH」); } 在我的情況下不起作用。你知道該怎麼做嗎? –

+1

它應該是if(element.attributes.attrs [「text」] [「text」] ==「Activity」)。 此外,您可以通過執行console.log(element)來檢查元素對象的完整結構,並將此對象打印到瀏覽器控制檯中。 –

1

您可以從下面的方法

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

,你可以使用API​​元素以及,element.attr('text')返回從造型text對象:{ text: 'Activity', fill: '#ffffff', 'font-size': 10, stroke: '#000000', 'stroke-width': 0 }

+0

自從我的解決方案運行以來,我沒有對它進行測試,但感謝您的反饋。 –