Я понимаю, что моя проблема вполне специфична c для конкретной комбинации инструментов, но я думаю, что общая проблема не в проблеме с метеоритом (хотя может быть и решение, определяемое с помощью метеора c), а в основном разрешается через javascript. Я прочитал несколько постов здесь (и в других местах) схожего характера, но ни один из них не совсем похож на то, что я пытаюсь сделать, поэтому новый топи c.
В качестве краткого обзора я экспериментирую с пример D3. js сортируемых и адаптивных таблиц , в котором я добавил класс и обработчик нажатия:
var rows = table.append('tbody').selectAll('tr')
.data(data).enter()
.append('tr')
.attr('class', 'clickable-row')
.on('click', function(d) {
console.log(d);
});
Я хотел бы нажать на и перейдите к URL-адресу диаграммы D3 (/ graph), которая использует некоторые данные из строки таблицы.
Я использую 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'
});
Я не уверен, как это сделать в обработчике нажатия в примере…
Некоторые статьи, которые я прочитал, предлагают, чтобы для метеора я вместо этого сделал каждую строку привязкой, а затем настроил событие шаблона для обработки щелчка. Я пробовал это:
Template.datatable.events({
'click .clickable-row'(e) {
console.log(e);
}});
Но когда я нажимаю на строку, единственный вывод на консоли происходит из таблицы (console.log (d)), а не из события Template.datatable. Я также удалил обработчик щелчка из таблицы, полагая, что он может переопределять обработчик события шаблона, но я все равно не получил никакого события при нажатии. Таким образом, этот последний метод, похоже, не является правильным путем вперед.
Как заставить работать любой из этих параметров при нажатии на строку таблицы?
- загрузить / 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);
});
Я могу установить сеансовую переменную 'someVar' где-нибудь еще в коде с помощью 'someObj' (и аналогично получить его) за исключением этого конкретного обработчика нажатия. Моя попытка установить его здесь приводит к нулевому значению при вызове Session.get ('someVar'), за исключением в блоке on click, ограничивая область действия сеанса var только этим блоком кода вместо глобального область действия, даже если я объявлю сеанс var глобально.
Кто-нибудь понимает эту проблему?