, 다음, 다음을 클릭 콜백에서와 같이 라벨에 액세스 할 수 있습니다, 질문에 대답합니다 :
network.on("click", function(params) { // NOT RECOMMENDED
if (params.nodes.length > 0) {
var nodeId = params.nodes[0];
console.log("Clicked on a NODE with id = " + nodeId + ", label = " +
nodes[nodeId - 1].label);
}
});
(배열은 0에서 색인되기 때문에 하나가 필요했다 빼면, 그러나 ID는 1에서 시작) 항상 얻기에 너무 의존으로,
그러나, 좋은 코딩 연습되지 않을 것 대회 권리. 노드를 삭제하거나 ID 용 문자열을 사용하는 등의 작업을 시작하면이 규칙을 위반할 수 있습니다.
또 다른 방법은 네트워크 개체에 내부 구조를 사용하는 것입니다. 문제는 사용자 문서에이 내용이 언급되지 않았으므로 다소 위험하므로 향후 버전에서 변경 될 수 있습니다. vis.js. 사용자를위한 설명하지 않은 네트워크 객체에서 노드와 에지 정보를 얻고, 내가 아는
console.log("..Or, using undocumented internal structure, node label = " +
this.body.nodes[nodeId].options.label);
: 내부 구조에 주위를 파고, 난 당신이 다음을 사용할 수 있습니다 발견 그래프 알고리즘을 사용하기 위해, 노드와 가장자리는 중요한 관심 대상이지만 아직 문서화되지 않은 숨겨진 내부 객체입니다. 따라서 우리는 잘못된 코딩 방법으로 간주 될 수있는 몇 가지 위험을 감수합니다.
vis.js의 권장 관행은 노드를 vis.DataSet으로 만드는 것입니다. 당신은 이미 가장자리를 vis.DataSet - 노드뿐만 아니라 만들었습니까?
다음() 노드의 사양은
var nodes = new vis.DataSet([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]);
모양과 라벨을 보여주는 클릭 콜백
network.on("click", function(params) {
if (params.nodes.length > 0) {
var nodeId = params.nodes[0];
console.log("Clicked on a NODE with id = " + nodeId + ", label = " +
nodes.get(nodeId).label);
}
});
당신은 또한 추가로 다른 데이터 집합 방법에 액세스 할 수 있습니다 같을 것이다 및 업데이트() (예 :
)
nodes.add({id: 6, label: 'Node 6'});
nodes.update({id: 6, label: "Modified node 6", newVar: "A new property"});
데이터 집합 및 이러한 방법을 사용하면 당신은 임의의 순서로 노드와 모서리를 입력 할 수 있습니다. 이것은 모두 효율적이어야합니다. 내부적으로, 노드와 에지에 대한 주요 액세스는 배열 색인이 아닌 객체 속성에 대한 참조를 통해 이루어 지므로 액세스가 빨라야합니다. API는 사용자 편의를 위해 배열을 생성하는 경향이 있지만, 복사하는 것만이 아니라 생성하는 것입니다.
네트워크 개체와 별도로 일부 노드 정보를 유지해야하는 것은 사용자 관점에서 보면 다소 어색한 것으로 보입니다. 특히 둘 이상의 네트워크 개체가있는 경우 특히 그렇습니다. 그러나 최소한이 방법은 게시 된 API 만 사용합니다.