Можно ли повторно использовать выбор enter() после добавления/вставки?

У меня есть сценарий, в котором я хочу использовать объединение данных, чтобы добавить 2 новых элемента для каждого элемента данных.

Первоначально я делал что-то вроде этого:

var y = d3.selectAll("line")
    .data([123, 456]);

y.enter().append("line");  // assume attr and style set
y.enter().append("line");

y.transition()...

Прежде чем я все обдумал, я ожидал, что выбор обновления, используемый в моем переходе, будет содержать объединенные добавления из выбора входа. Но, конечно, это не сработало, потому что в выборке есть только 1 слот для каждого элемента данных.

Поэтому я изменил код таким образом, чтобы он по-прежнему дважды использовал один и тот же выбор enter(), но затем повторно выбирал новые элементы, чтобы выполнить переход.

Этот подход сработал, но мой вопрос заключается в том, является ли этот способ рекомендуемым. Должен ли я прекратить использовать enter() после добавления/вставки? Или можно использовать его для создания нескольких элементов, если я помню, что выбор обновления будет содержать только элементы, созданные последними?

Если выяснится, что это неправильно, как это лучше сделать?

38
задан Scott Cameron 29 May 2012 в 23:56
поделиться