d3.js - Meteor,d3代码放在哪里?

标签 d3.js meteor iron-router

我使用meteor、iron-router和d3。 d3 用于根据我在iron-router 的数据函数中计算的数据 react 性地显示饼图。所以,我希望 d3 在 dom 就位时运行。

但是,我不知道应该将 d3 代码放在哪里。我曾经把它放在生成数据的数据函数中。然而,有时数据函数是在dom还没有准备好时计算的(因此d3无法绘制图表)。

我想在dom完全渲染后运行d3,并且该函数可以访问数据函数的结果。我尝试使用钩子(Hook) onAfterAction,但似乎该函数无法访问数据。我还尝试使用 Template..rendered,正如 stackoverflow 中的其他一些帖子所说。然而,渲染的函数似乎只运行一次,并且当数据发生变化时它不会重新运行。我将渲染的函数放在 Tracker.autorun 函数中,但它仍然只运行一次。

那么,是否有一个地方可以 react 性地运行 d3 代码来访问渲染的 dom 以及数据字段?

谢谢。

最佳答案

您应该使用onRendered回调 template autorun 。开箱即用,不适用于 1.0,但是有一个技巧 - 您可以使用 Template.currentData 在上下文更改后重新运行自动运行。像这样:

Template.myPictures.onRendered(function () {
  this.autorun(function () {
    var data = Template.currentData();
    // use data with d3 here
  });
});

更多详情见this issue文末.

关于d3.js - Meteor,d3代码放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924253/

相关文章:

javascript - meteor 铁路由器 : custom id route

javascript - D3 Zoom with Scrollbars 用作平移,滚动条宽度和高度调整为缩放比例

javascript - 在 d3 中添加一个新的 rccord 到平行坐标图

javascript - d3.js 圆弧段动画问题

带有 bool 复选框的 meteor 自动成型 "afFieldValueIs"仅触发一次

javascript - 添加路由器以在 Meteor 中按人名查看帖子

javascript - d3.js 行与 React

javascript - meteor 读数 csv 文件 Papa Parse

javascript - 为笔记本电脑和移动设备使用不同的元素?

javascript - 在 meteor 铁路由器中使用参数填充文本框