Javascript D3表行作为与铁的链接:Meteor中的路由器

Javascript D3表行作为与铁的链接:Meteor中的路由器,javascript,d3.js,meteor,Javascript,D3.js,Meteor,我意识到我的问题非常特定于特定的工具组合,但我认为一般问题不是Meteor问题(尽管可能有特定于Meteor的解决方案),而是基本上可以通过javascript解决的。我在这里(和其他地方)读过几篇性质类似的帖子,但都不太喜欢我正在尝试做的事情,因此有了新的话题 作为一个快速概述,我正在试验这个示例,其中我添加了一个类和一个点击处理程序: var rows = table.append('tbody').selectAll('tr') .data(data)

我意识到我的问题非常特定于特定的工具组合,但我认为一般问题不是Meteor问题(尽管可能有特定于Meteor的解决方案),而是基本上可以通过javascript解决的。我在这里(和其他地方)读过几篇性质类似的帖子,但都不太喜欢我正在尝试做的事情,因此有了新的话题

作为一个快速概述,我正在试验这个示例,其中我添加了一个类和一个点击处理程序:

var rows = table.append('tbody').selectAll('tr')
                   .data(data).enter()
                   .append('tr')
                           .attr('class', 'clickable-row')
                           .on('click', function(d) {
                               console.log(d);
                           });
我想做的是单击一行并导航到D3条形图(/graph)的url,该条形图使用表行中的一些数据

我使用的是Iron:Router,并设置了路由,可以通过在地址栏中输入完整的url(localhost:3000/graph)在那里导航

路由器:

Router.configure({
    layoutTemplate: 'home'
});
Router.route('/', {
    name: 'main',
    template: 'main'
});
Router.route('/table', {
    name: 'table',
    template: 'datatable'
});
Router.route('/graph', {
    name: 'graph',
    template: 'barchart'
});
我不知道如何在示例中的单击处理程序中执行此操作

我读过的一些文章建议,对于meteor,我应该改为将每一行作为锚点,然后设置一个模板事件来处理单击。我试过这个:

Template.datatable.events({
'click .clickable-row'(e) {
    console.log(e);
}});
但是,当我单击该行时,控制台上的唯一输出来自表(console.log(d)),而不是来自Template.datatable事件。我还从表中删除了onclick处理程序,认为它可能会覆盖模板事件处理程序,但我仍然没有得到任何onclick事件。因此,后一种方法似乎不是正确的前进道路

单击表格行时,如何使这两个选项中的任何一个正常工作

  • 从单击表处理程序加载/图形路由
  • 从模板事件单击处理程序加载/graph路由
  • 我不是在寻找jQuery解决方案

    预计到达时间: 看来我想做的事情并没有按我预期的方式进行。不管路由问题如何。考虑这个片段:

    var rows = table.append('tbody').selectAll('tr')
                       .data(data).enter()
                       .append('tr')
                               .attr('class', 'clickable-row')
                               .on('click', function(d) {
                                   console.log(d);
                                   Session.set('someVar', someObj);
                               });
    
    我可以使用“someObj”在代码中的任何其他地方设置会话变量“someVar”(同样也可以获得它),除了在这个特定的点击处理程序中。我在这里设置它的尝试会导致调用Session.get('someVar')时出现空值,单击块内除外,将会话变量的作用域限制为仅此代码块而不是全局作用域,即使我全局声明会话变量也是如此

    有人了解这个问题吗