Разница между «вкл» и «вызов» в d3 - PullRequest
1 голос
/ 10 апреля 2020

У меня есть вопрос о разнице между аргументом call & on в d3.

Насколько я понял,

1) 'on' аргумент

«выбор» + «вкл» фокусирует событие или действие. Например, ,


d3.select (). On ('click', function)

или

transition (). On ('end', function)



приведенные выше аргументы интерпретируются как

, когда происходит что-то внутри on (), выполняйте функцию после события.

2) аргумент 'call'

аргумент 'selection' + 'call' рисует вещи в svg, используя информацию, указанную в аргументе call.

Например,

d3.select (). Call (d3.axisBottom (x)) -> нарисовать ось на выделении
или d3.select () .call (bru sh) -> нарисуйте bru sh на выделении



ОДНАКО! Я не могу интерпретировать это аргумент из моего понимания.

scatter.select(".brush").call(brush.move, null)

, который предназначен для устранения bru sh после его перемещения. Это должно быть что-то вроде

select().on(brush.move, function(){eliminating or hide brush})

Код выше - мой псевдокод.

Может кто-нибудь исправить меня, если я неправильно понял вызов и функцию? И почему я должен позвонить (bru sh .move, null), чтобы удалить кисти?

Полный код, с которым я столкнулся, находится по следующей ссылке. https://jsfiddle.net/soonk/4u6zL0dn/

1 Ответ

2 голосов
/ 10 апреля 2020

Если вы посмотрите на документы API для selection.call(), вы заметите, что

scatter.select(".brush").call(brush.move, null)

в основном эквивалентно

brush.move(scatter.select(".brush"), null)

При использовании .call(brush.move, null) фактический выбор scatter.select(".brush") передается в качестве первого аргумента brush.move(). Второй аргумент null предыдущего вызова передается как brush.move().

в качестве второго аргумента. Глядя на спецификацию для brush.move(), вы найдете (выделение мое):

# bru sh .move ( группа , выбор )

[…] Выбор должен быть определен как массив чисел, или null, чтобы очистить выбор bru sh .

Соединяя эти два бита, легко понять, почему первое утверждение используется для очистки выбора bru sh.

...