Я строю карту, на которой пузырьки представляют твиты. Время от времени я спрашиваю, есть ли новые твиты с сервера, используя d3.json
, и он возвращает мне местоположения новых твитов.раздел ввода d3.js select() вызывается только один раз
Я связываю этот массив, содержащий только новые местоположения, используя selectAll.()data()
и ожидаю, что они будут в разделе enter()
каждого нового запроса с новыми данными. Но я получаю только один раз, событие, хотя соединение данных, похоже, работает.
добавить Everyting на группу SVG, который я создал, как это:
bubbleGroup = svg.append("g").attr("class", "bubble");
Затем я добавить кружках следующим образом:
var circlesSelection = bubbleGroup.selectAll("circle")
.data(tweets, function (tweet) {
console.log("We have new data:");
console.log(tweet);
return tweet;
});
circlesSelection.enter()
.append("circle")
.attr("transform", function(tweet) {
console.log("Gets called only once");
return "translate(" + tweet["location"] + ")";})
.attr("r", 5);
Таким образом, в то время как первый журнал отображается все время, с новыми данными из массива, второе - только один раз.
Есть ли какое-то фундаментальное непонимание основы d3.js здесь или какая-то незначительная ошибка?
страница, которая доказывает это поведение является следующее: example
Благодарим за отзыв, но не каждый элемент, который был однажды зарегистрирован в соединении данных, должен быть зарегистрирован хотя бы один раз в поле ввода с помощью этого кода? И какова возможная корректировка ключевой функции? Массив данных - это в основном словарь, если это важно. –
Нет, если есть элементы «круг», которые уже соответствуют данным в DOM, что, вероятно, будет иметь место, если я правильно интерпретирую ваш код, когда вы извлекаете 10 последних твитов, независимо от того, видели ли вы их раньше. Я бы использовал идентификатор твита, т. Е. «Return tweet.tid» в ключевой функции. –
Это действительно звучит как правильный ответ, и я попробую это, но дело в том, что если это так, должны быть какие-то объекты, которые были бы разными, и это привело бы к входу в этот раздел, но это никогда не бывает, кроме самого первого раза. –