2012-04-23 3 views
2

Я использую в D3 макет с принудительной ориентацией, который захватывает данные из файла JSON, а затем, когда один из узлов дважды щелкнут, запрашивает базу данных, чтобы найти ссылки на этот узел и обновляет ссылки и узлы массивов, пытаясь добавить новые данные в список. Кажется, что, когда узлы добавляются без ссылок, они работают нормально, но ссылки на координаты xy в конечном итоге составляют NaN. Вы можете увидеть эффект здесь, просто дважды щелкните на одном из узлов:NaN в макете с принудительной привязкой добавляется в D3.js

http://blockses.appspot.com/2432083

ответ

7

Я установил это, переписав код, чтобы следовать сила направленного с дописыванием, например, из Бостока. Проблема возникает, когда вы перезаписываете свои узлы и массивы ссылок, а не нажимаете на них данные, в случае, если кто-то сталкивается с подобными проблемами.

Обновленный код в оригинальной сущности и их можно увидеть здесь:

http://blockses.appspot.com/2432083

+3

Только для тех, кто имеет эту проблему, всегда остановить макет, прежде чем добавлять ссылки. Расчет внутреннего тика использует другие массивы, которые, как предполагается, имеют ту же длину, что и ссылки. При расчете по новым ссылкам внутреннее состояние будет «неопределенным», а «NaN» будет распространяться на «d.x» и «d.y» исходного и целевого узлов новых ссылок. Это все выровнено, когда вы вызываете 'force.start()', поэтому, чтобы убедиться, что это сделано до появления каких-либо тиков, остановите компоновку перед добавлением данных. –