У меня есть визуализация D3 (v4) с множеством форм, которые в некоторых случаях ожидают новые позиции в течение примерно трех секунд. У этих фигур есть прослушиватели событий щелчка и мыши, которые я хочу быть активными только тогда, когда виз не перемещается.События короткого замыкания в d3?
Наивный способ сделать это прост. У меня есть булева переменная is_animating
, которая устанавливается на true
, когда анимация начинается и false
на обратный вызов, так что я просто добавил это к слушателям событий:
shapes.on("click", function(d) {
if (is_animating) {
return;
}
// otherwise, business as usual
})
Это хорошо, но я планирую добавить много слушатели событий в форме и хотели бы, если бы был более элегантный способ перехватить события выше в пузырьках и просто сделать это один раз вместо того, чтобы добавлять эту проверку к каждому событию. Но я не совсем понимаю d3.event
и как он справляется с пузырями. Есть ли простое «masterene listenever», если вы это сделаете, что бы стрелять в любое время, когда пользователь пытается что-то сделать, что может привести к короткому замыканию события, если is_animating
верно?
Спасибо, приятно знать! Это все равно означало бы делать проверку вместо каждого слушателя, но очень полезную информацию. –