편집 을 사용하여 줌 후 HTML을 다시 렌더링. 누구든지 최신 버전의 문제를 발견하면 도움이 될 것입니다. 고마워요나는 dagre-D3 라이브러리 (4.11)의 약간 이전 버전을 사용하고 관련 솔루션을 발견 Dagre D3
저는 그래프를 그리기 위해 Dagre d3를 사용하고 있습니다. 특정 노드에 사용자가 클릭, 내가 그 노드의 레이블 HTML을 추가하고자 할 때
내가 처음에 내 그래프를 렌더링
, 나는, 그리고g = new dagreD3.graphlib.Graph()
.setGraph({})
.setDefaultEdgeLabel(function() { return {}; });
var svg = d3.select("svg"),
inner = svg.select("g");
svgGroup = svg.append("g");
var render = new dagreD3.render();
render(d3.select("svg g"), g);
var zoom = d3.behavior.zoom().on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + ")" +
"scale(" + d3.event.scale + ")");
currentZoomScale = d3.event.scale;
currentPosition = d3.event.translate;
});
svg.call(zoom);
을한다. 물론 줌 다시 후
g.node(id).label += "<div>" + inputTemplate + "</div>";
var zoom = d3.behavior.zoom()
.scale(currentZoomScale)
.on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + ")" + "scale(" + d3.event.scale + ")")
});
svg.call(zoom);
d3.select("svg").on("dblclick.zoom", null);
inner.attr("transform", "translate(" + currentPosition + ")" + "scale(" + currentZoomScale + ")");
내가
currentPosition
및
currentZoomScale
를 유지하여 I 그래프가 남아 있는지 확인 할 수있을 것이라고 생각
: 이것은 내가 다음과 같이 수행 그래프, 나는 다시 렌더링하지 않으면 표시되지 않습니다 -표현. 그러나 이것은 사실이 아닙니다. 내가 확대하면 내 모든 노드는 내가 축소하면 더, 더 큰된다.
당신이 '잘 유지'가 무엇을 의미합니까 :
따라서, 가능한 해결책은 단지 순서를 변경합니까? –