2014-09-05 2 views
0

내 웹 응용 프로그램은 mxClient.js를 사용합니다. 나는 ID 매개 변수에 문자열로 내 개체를 초기화 할 때 내가 크롬에 요소를 검사 할 때mxGraph를 사용하여 SVG 요소에서 ID를 얻는 방법

mxGraph.prototype.insertVertex = function(parent, 
              id, 
              value, 
              x, 
              y, 
              width, 
              height, 
              style, 
              relative); 

그러나, 그것은 표시되지 않습니다 : 내 SVG 개체는 다음과 같은 형태로 제공 자신의 API를 사용하여 만들어집니다. 이 문제에 대한 확실한 해결 방법이 있습니까?

지금까지 jvery와 Javascript를 사용하여 svg를 호출하려했지만 아무 소용이 없었습니다.

내 코드베이스 :

하여 보는이 올바른지 무엇
function main(container) 
     { 
      if (!mxClient.isBrowserSupported()) 
      { 
       mxUtils.error('Browser is not supported!', 200, false); 
      } 
      else 
      { 
       mxEvent.disableContextMenu(container); 

      var graph = new mxGraph(container); 

      new mxRubberband(graph); 

      var parent = graph.getDefaultParent(); 

      graph.getModel().beginUpdate(); 
      try 
      { 

       var v1 = graph.insertVertex(parent, "_IWID_1021", 'asdf', 31, 240, 100, 30), 
        v2 = graph.insertVertex(parent, "_IWID_2349", 'Oasdf', 160, 320, 100, 30), 
        v3 = graph.insertVertex(parent, "_IWID_3452", 'asdf', 160, 160, 100, 30), 
        v4 = graph.insertVertex(parent, "_IWID_4561", 'asdfasdf', 320, 320, 100, 30), 
        v5 = graph.insertVertex(parent, "_IWID_5670", 'asdff', 320, 160, 100, 30), 
        v6 = graph.insertVertex(parent, "_IWID_6780", 'qwerqwer', 448, 240, 100, 30), 
        v7 = graph.insertVertex(parent, "_IWID_3456", 'zxcvxzcv', 597, 240, 100, 30), 
        v8 = graph.insertVertex(parent, "_IWID_3498", 'asdfasdf', 714.6, 240, 100, 30), 
        v9 = graph.insertVertex(parent, "_IWID_1643", 'asdfasdf', 822, 240, 100, 30), 
        v10 = graph.insertVertex(parent, "_IWID_5731", 'asdfasdf', 993, 240, 100, 30), 
        v11 = graph.insertVertex(parent, "_IWID_0942", 'asdfasdf', 1113, 240, 100, 30), 
        v12 = graph.insertVertex(parent, "_IWID_2875", 'asdfasdf', 1221, 240, 100, 30), 
        v13 = graph.insertVertex(parent, "_IWID_9397", 'asdfasdfasd', 1333, 240, 100, 30), 
        v14 = graph.insertVertex(parent, "_IWID_111", 'asdfasdf', 1486, 240, 100, 30); 

       var c1 = graph.insertEdge(parent, null, '', v1, v2), 
        c2 = graph.insertEdge(parent, null, '', v1, v3), 
        c3 = graph.insertEdge(parent, null, '', v2, v4), 
        c4 = graph.insertEdge(parent, null, '', v3, v5), 
        c5 = graph.insertEdge(parent, null, '', v4, v6), 
        c6 = graph.insertEdge(parent, null, '', v5, v6), 
        c7 = graph.insertEdge(parent, null, '', v6, v7), 
        c8 = graph.insertEdge(parent, null, '', v7, v8), 
        c9 = graph.insertEdge(parent, null, '', v8, v9), 
        c10 = graph.insertEdge(parent, null, '', v9, v10), 
        c11 = graph.insertEdge(parent, null, '', v10, v11), 
        c12 = graph.insertEdge(parent, null, '', v11, v12), 
        c13 = graph.insertEdge(parent, null, '', v12, v13), 
        c14 = graph.insertEdge(parent, null, '', v13, v14); 
      } 
      finally 
      { 
       graph.getModel().endUpdate(); 
      } 
     } 
    }; 
+0

함수의 _body_는 어디에 있습니까? – undefined

+2

ID가 mxGraphModel.getCell에 사용됩니다. endUpdate를 호출 한 후 graph.view.getState (cell) .shape.node (레이블의 .text.node)를 사용하여 요소의 SVG 노드를 가져올 수 있습니다. – user1084282

+0

고마워, 나는 그것을 곧 밖으로 시도하고 작동하는 경우 질문을 업데이 트합니다. – Xenyal

답변

0

.

저는 몇 주 동안이 작업을하려고하는 벽돌 벽에서 머리를 세게 치고있었습니다.

생성 된 SVG의 NONE에는 내가 볼 수있는 현명한 HTML 기반 ID 속성이 포함되어 있습니다. 즉, 생성 된 ID가 jQuery 또는 다른 조작을 수행 할 필요가 없음을 의미합니다.

우리가 한 일은 우리가 만든 정점 배열을 유지하는 것이 었습니다. 그런 다음 나중에 다시 참조 할 수있었습니다.

여기서는 셀 객체의 이미지를 변경하려고 했으므로 MxGraph에서 click 이벤트를 받았을 때 배열에서 참조를 유지하고이를 일치시킨 다음 해당 API를 사용하여 이미지를 변경했습니다.

가 도움이 그러나 있는지 모르겠어요

,하지만 ... 난 그냥 다른 비슷한 질문에서 지적했듯이

당신이 할 경우, 당신의 MxGraph 이벤트 핸들러에서

var mouseEvent = event.getProperty('event'); 
var selectedCell = event.getProperty('cell'); 
다음

여기서 이벤트는 이벤트 처리기에 매개 변수로 전달됩니다.

그런 다음 요소의 HTML에서 얻을 수는 내부 HTML을 한 후에는 다음 이론 ID의 속성이나 다른 의견을 추가 일반 JS/HTML 코드를 사용할 수

selectedCell.currentTarget.innerHTML 

을 사용하여 클릭 너는 필요해.

모든 후가 ID 인 경우 "insertVertex"를 사용하여 셀을 만들 때 제공 한 ID는 selectedCell 개체에서 문자열로 사용할 수 있습니다.

관련 문제