2016-08-01 2 views
2

Как упражнение в понимании того, как работает d3, я строил это с нуля, вымощенное из разных примеров, которые я нашел.d3 v4 forceSimulation узлы больше не перемещаются после перезапуска()

Моей проблемой, с которой я не могу разобраться, является то, что узлы больше нельзя перетаскивать или даже перемещать после обновления данных. Строки обновляются, а не узлы. Эффект более очевиден, если вы перетаскиваете некоторые узлы перед отправкой формы снова.

Пример ниже демонстрирует проблему, я закомментировать код WebSocket я использовал локально и заменить некоторые статические данные

вам нужно для его просмотра на весь экран:

http://bl.ocks.org/d4rr3ll/68713a42d59f5bb086ad25d5a0bcbad1

Любая помощь приветствуется

Edited добавить:

Так что мое временное решение сейчас состоит в том, чтобы удалить все узлы из SVG перед обновлением, но это не идеально.

function update_graph(data) { 
    svg.selectAll(".node").remove(); 
    ... 

ответ

2

После слияния обновлений вы не назначаете объединенные результаты обратно на ваш узел и ссылку.

link = link.merge(line) 
node = node.merge(circle) 
+0

Отлично, это решило, спасибо. – d4rr3ll