【问题标题】:How do I use d3's brushing/dragging/zoom behaviors in a meteor project?如何在流星项目中使用 d3 的刷/拖/缩放行为?
【发布时间】:2026-01-25 16:00:01
【问题描述】:

我正在尝试使用 Meteor.js 和 D3.js 基于this one 构建增强的力布局图。

问题来了:

在本项目和其他涉及流星框架内的 d3 鼠标移动事件的项目中,合并鼠标事件功能会导致应用中断。
中断,我的意思是崩溃、鼠标拖动错误等等,或者其他不守规矩的行为。

真的有两个问题:

  • 为什么会这样?是什么导致了这种令人沮丧的行为?这个问题可以解决吗,还是我需要尝试使用不同的框架来构建这个应用?
  • 我怎样才能防止这种行为或绕过它?我尝试使用 div 为图形节点构建相同的应用程序,并使用 jquery 的可拖动功能来拖动 whem,效果很好,但它有点像 hack,因为我仍然无法使用 D3 功能,如刷牙和缩放。

Here is a link to a very-simple version of the force-layout editor being incorporated in a meteor environment。该程序允许用户拖动节点,但所有其他功能都丢失了。拖动出现的单个节点会引发以下错误:

Uncaught TypeError: Cannot read property 'apply' of undefined

用户无法选择节点、绘制新节点或执行应用程序编程执行的任何其他操作。

【问题讨论】:

    标签: javascript node.js d3.js meteor


    【解决方案1】:

    看起来"preventing default" 是罪魁祸首...我刚刚得到我的图表来选择节点并绘制连接。

    Here was the key to the drag line not working。事实证明,d3.svg.mouse(container) 已被弃用。你现在应该使用d3.mouse

    这真是个好消息,因为这意味着 d3 和流星比我想象的更兼容。

    【讨论】: