2016-11-09 1 views
1

Полная скрипку здесь: https://jsfiddle.net/scottbrown0001/o7qL4dpr/Пример установки экземпляра Boston d3: что такое эффект d3.transition(). Each?

Я пытаюсь подражать примеру константности объекта Майка Босток в https://bost.ocks.org/mike/constancy/, и я не могу понять, что выбирается each() на его линии линии 133:

function change() { 
    clearTimeout(timeout); 

    d3.transition() 
    .duration(altKey ? 7500 : 750) 
    .each(redraw); 
    } 

Я использую то, что похоже на ту же конструкцию в моем примере скрипта, и хотя кажется, что эффект перехода для запуска я не вижу более медленной продолжительности. В общем, что делает эта конструкция d3.transition.each() в конкретных деталях? Похоже, что это может быть какой-то «главный переход», но я не вижу, как работает итерация each(). У меня должно быть какое-то ключевое различие, но я этого не вижу.

ответ

2

Как и в другом вопросе, это то, что имеет большое значение для d3 v3 vs d3 v4. Вы не сможете воспроизвести поведение с этим кодом в v4

взглянуть на this section из d3 v4 выпуска нот, где mbostock обращается изменения в transition.each:

Этот метод заменяет глубоко магическое поведение перехода. в 3.x; в 4.0, transition.each идентичен selection.each

В v3, transition.each отличается как описано здесь: https://github.com/d3/d3-3.x-api-reference/blob/master/Transitions.md#each

[...] немедленно вызывает указанную функцию для каждого элемента в текущем переходе, передавая текущие данные d и индекс i, с этим контекстом текущего элемента DOM.

Таким образом, в основном причина, по которой это не работает так же, заключается в том, что теперь переход.each будет проходить через каждый элемент, затронутый переходом.

+0

Хороший ответ! Очень хорошо исследован. Стоит отметить, что пример * Object Constancy' по-прежнему основан на D3 ** v2 **, который, однако, не повлияет на ваши выводы! – altocumulus

+0

Ahh .. Между тем, находясь в процессе обучения d3 и переходя к v4 на полпути, у меня было несколько штук «в воздухе». Ответы на этот вопрос и мой другой вопрос были чрезвычайно полезными. Я не чувствую себя так плохо, так как области, которые меня смутили, - это именно те области, на которых М. Босток приводит свое обсуждение в «Что делает программное обеспечение хорошим» как районы, где он не был доволен v3. :) – Scott

+0

Yup, точно. D3 довольно много, чтобы принять сначала. Между «мышлением в соединениях» и специфическими функциями d3 это непросто! Похоже, ты отлично справляешься –

Смежные вопросы