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

D3.js Meteor,d3代码放在哪里?,d3.js,meteor,iron-router,D3.js,Meteor,Iron Router,我使用流星,铁路由器和d3。d3用于根据我在iron router的数据函数中计算的数据反应性地显示饼图。所以,我想让d3在dom就位时运行 然而,我不知道我应该把d3代码放在哪里。我曾经把它放在我生成数据的数据函数中。但是,有时数据函数是在dom未就绪时计算的(因此d3无法绘制图表) 我希望在dom完全呈现之后运行d3,并且该函数可以访问数据函数的结果。我尝试在AfterAction上使用钩子,但这个函数似乎无法访问数据。我还尝试使用Template..rendered,正如stackover

我使用流星,铁路由器和d3。d3用于根据我在iron router的数据函数中计算的数据反应性地显示饼图。所以,我想让d3在dom就位时运行

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

我希望在dom完全呈现之后运行d3,并且该函数可以访问数据函数的结果。我尝试在AfterAction上使用钩子,但这个函数似乎无法访问数据。我还尝试使用Template..rendered,正如stackoverflow中的一些其他帖子所说。但是,渲染函数似乎只运行一次,并且在数据更改时不会重新运行。我将渲染函数放在Tracker.autorun函数中,但它仍然只运行一次

那么,是否有一个地方可以反应性地运行d3代码,以访问呈现的dom以及数据字段

谢谢。

您应该使用带有。不适用于
1.0
的开箱即用功能,但是有一个技巧-您可以通过如下方式使自动运行在上下文更改后重新运行:

Template.myPictures.onRendered(函数(){
这是一个自动运行(函数(){
var data=Template.currentData();
//在这里使用d3的数据
});
});
有关详细信息,请参见的结尾