2017-11-22 14 views
1

가장자리에서 작동하도록 하이퍼 링크를 만들 수 있습니까? 이 옵션vis.js 가장자리 하이퍼 링크

network.on("selectNode", function (params) { 
    if (params.nodes.length === 1) { 
     var node = nodes.get(params.nodes[0]); 
     window.open(node.url, '_blank'); 
    } 
}); 

을 사용하는 경우

예, 나는 연결되어있는 두 개의 노드가, 그리고

{ id: 1601, label: 'label', x: -1085, y: -429, url: 'link' }, 

따라서 위 대한 그들에 레이블이 URL은 노드에 대한 작업 이제 표준 구성을 사용하는 두 노드 사이에 링크가 있습니다

{ from: 1600, to: 1613, label: "label value" }, 

두 노드를 연결하는 라인/에지에서 작동하는 huperlink를 얻을 수 있습니까?

답변

1

기본적으로 코드에서 "노드"를 "가장자리"로 변경하면 가장자리를 선택할 때 url을 열 수 있습니다. 그러나 노드를 선택하면 모든 인접한 모서리가 선택됩니다. 어쨌든 selectEdge 콜백을 하나만 얻지 만 무시할 수 있습니다. 누군가가 하나의 연결 가장자리에있을 일이 노드를 선택하는 경우를 배제 할 경우, 다음과 같이 그에 대한 검사를 추가

network.on("selectEdge", function(params) {  
    if ((params.edges.length == 1) && (params.nodes.length == 0)) { 
     var edgeId = params.edges[0]; 
     window.open(edges.get(edgeId).url, '_blank');     
    } 
}); 

는 여전히 문제가있다은 "선택"사용하여 이. 이전에 노드를 선택했다면 위의 점검으로 인해 보이지 않더라도 인접한 모서리가 선택됩니다. 인접한 모서리 중 하나를 클릭하면 해당 모서리가 이미 선택되었으므로 콜백을 얻지 못합니다. 대신 network.on("click" ... ) 방법을 사용하는 것이 더 좋습니다.

network.on("click", function(params) {        
    if (params.nodes.length == 1) { 
     var nodeId = params.nodes[0]; 
     if (nodes.get(nodeId).url != null) { 
      window.open(nodes.get(nodeId).url, '_blank'); 
     }   
    } else if (params.edges.length==1) { 
     var edgeId = params.edges[0];  
     if (edges.get(edgeId).url != null) { 
      window.open(edges.get(edgeId).url, '_blank'); 
     }   
    } 
});