2013-09-06 3 views
0

В блоке -Редактирование данных элементов для каждого элемента в SelectAll в d3

http://bl.ocks.org/whatsthebeef/6456877

Я пытаюсь добавить атрибут данных для каждого элемента в selectAll(). Я интерпретировал это documentation, говоря, что это должно работать, но это не так. Я также попробовал его с некоторыми CSV-файлами, которые так же нарисовали круг на карте, и это тоже не сработало. Я понимаю, что есть другие варианты, такие как использование datum после enter(), который работает, но у меня есть другие варианты использования, когда это будет слишком поздно.

Если код прокомментирован // .data(countries) ракомментирован, а текущий data(function(d){....}) удален, он действительно работает.

Кто-нибудь знает, возможно ли, что я делаю, и если да, то что я делаю неправильно?

+0

Работы для меня - http://jsfiddle.net/sRSAy/ –

+0

@LarsKotthoff Я замечаю, что вы возвращаете индекс, а не данные. Это то, что я пропустил. Вы должны создать ответ с этой информацией, и я буду отмечать его, поскольку он может быть полезен другим. Тем не менее я понимаю, что это не очень хорошая практика, поскольку цель этого обратного вызова - это больше, чтобы определить, какие данные необходимо связывать с данными, а не манипулировать данными. – zode64

+0

Не совсем уверен, что вы имеете в виду под «return index» - вы говорите о ключе, который используется для сопоставления данных? Это то, с чем вы столкнулись (например, данные не совпадают, как и должно быть)? –

ответ

1

Вы должны быть в состоянии делать то, что вы хотите в этой манере, то есть что-то вроде

.data(data, function(d) { d.bar = 10; return d.foo; }) 

Полный пример here.

Хорошая идея - это другой вопрос, на который ответ почти наверняка нет.

1

Необязательный второй аргумент данных для key function. Я хотел бы предложить добавить свойство в страны ж/д forEach:

var countries = topojson.feature(world, world.objects.countries).features; 
countries.forEach(function(d){ d.code = "1"; }); 

svg.selectAll("path:not(.graticule)") 
    .data(countries) 
    .enter().append("path") 
    .attr("d", path); 

http://bl.ocks.org/1wheel/6459380

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