Javascript D3表行作为与铁的链接:Meteor中的路由器
我意识到我的问题非常特定于特定的工具组合,但我认为一般问题不是Meteor问题(尽管可能有特定于Meteor的解决方案),而是基本上可以通过javascript解决的。我在这里(和其他地方)读过几篇性质类似的帖子,但都不太喜欢我正在尝试做的事情,因此有了新的话题 作为一个快速概述,我正在试验这个示例,其中我添加了一个类和一个点击处理程序:Javascript D3表行作为与铁的链接:Meteor中的路由器,javascript,d3.js,meteor,Javascript,D3.js,Meteor,我意识到我的问题非常特定于特定的工具组合,但我认为一般问题不是Meteor问题(尽管可能有特定于Meteor的解决方案),而是基本上可以通过javascript解决的。我在这里(和其他地方)读过几篇性质类似的帖子,但都不太喜欢我正在尝试做的事情,因此有了新的话题 作为一个快速概述,我正在试验这个示例,其中我添加了一个类和一个点击处理程序: var rows = table.append('tbody').selectAll('tr') .data(data)
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事件。因此,后一种方法似乎不是正确的前进道路
单击表格行时,如何使这两个选项中的任何一个正常工作
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')时出现空值,单击块内除外,将会话变量的作用域限制为仅此代码块而不是全局作用域,即使我全局声明会话变量也是如此
有人了解这个问题吗