我如何在标准Meteor中实现这一点而不必进行奇怪的黑客攻击?

我如何在标准Meteor中实现这一点而不必进行奇怪的黑客攻击?,meteor,Meteor,我的示例应用程序显示了带有meteor的d3js图表。宽度、高度和数据可以由用户反应性地更改 挑战在于只刷新图表中需要刷新的部分 我这样做是为了好玩,看看如何用Meteor Reactive实现它,因为有人在这里用Reactive.js实现了它: 您可以在此处尝试该应用程序: 文档化的代码如下所示: 问题是:为了让它正常工作,我必须使用一个hack,用一个更简单的对象替换Session,因为我们不能在Session中存储函数类型。我需要存储d3js返回的缩放函数。然后,我使用比例函数作为反应依赖

我的示例应用程序显示了带有meteor的d3js图表。宽度、高度和数据可以由用户反应性地更改

挑战在于只刷新图表中需要刷新的部分

我这样做是为了好玩,看看如何用Meteor Reactive实现它,因为有人在这里用Reactive.js实现了它:

您可以在此处尝试该应用程序:

文档化的代码如下所示:

问题是:为了让它正常工作,我必须使用一个hack,用一个更简单的对象替换Session,因为我们不能在Session中存储函数类型。我需要存储d3js返回的缩放函数。然后,我使用比例函数作为反应依赖项来刷新图表的条形图或标签

所以,我想知道您是否可以添加在会话中存储函数的可能性,或者是否有其他方法(不创建自己的反应式数据源)


谢谢

可以将值存储在ReactiveVars中,ReactiveVars可以存储函数。添加带有meteor的包后,添加反应性var:

var foo = new ReactiveVar;
foo.set(function(){});
foo.get(); // => function(){}

让我看看我是否理解这个问题。。。您有一些输入字段供用户输入图表规格(例如,如果用户在第三个输入字段中输入“1,4,2”,则意味着有三个相对高度为1、4和2的框)。目标是按照用户指定的方式显示图表,并以反应方式显示(图表应随着用户更改输入而更改)。这是一个准确的总结吗?我想我不清楚的部分是“挑战是只刷新图表中需要刷新的部分”。您能否给出一个具体的例子,例如用户将输入从A更改为B,目标是刷新图表的X部分,而不是Y部分?挑战与Wealthfront文章中所述的相同:不刷新整个图表,而只是刷新需要它的部分。在这个简化的示例中,图中没有很多部分。例如,您可以更改宽度,它不会再次计算scaleY,而只计算scaleX、条形图和标签。哦,好的,文章说“注意,只有图表中受给定更改影响的部分会被更新。在我们的示例中,这就是一切”。这就是让我困惑的地方,我没有看到一个例子,一个值可以在不需要重新绘制整个内容的情况下改变。