Я использовал решение из принятого здесь ответа для переноса текста на древовидную диаграмму : перенос текста в D3
Тем не менее, когда я обновить данные , например:
nodeUpdate
.selectAll("text.nodeText")
.text(function(d) {
return d.name;
})
.call(wrap, 100)
.style("fill-opacity", 1);
эффект обертывания исчезает .
Что я делаю не так?
____ Изменить, чтобы показать больше кода ____
Каждый узел добавляется с обычной процедурой D3JS (ввод, обновление, выход).Проблема в том, что перенос обновленного текста не работает.
Таким образом, мы вводим узлы on:
var nodeEnter = node
.enter()
.append("g")
.call(dragListener)
.attr("class", "node")
.attr("transform", function(d) {
return "translate(" + source.y0 + "," + source.x0 + ")";
})
.on("click", click);
Мы добавляем элементы кузел, как и текст интереса:
nodeEnter
.append("text")
.attr("x", 5)
.attr("dy", ".95em")
.attr("class", "nodeText")
.attr("text-anchor", "start")
.text(function(d) {
return d.name;
})
.call(wrap, 150);
Обтекание работает нормально, если мы не обновим эти узлы.Но после обновлений, подобных этому ниже:
var nodeUpdate = node
.transition()
.duration(duration)
.attr("transform", function(d) {
return "translate(" + d.y + "," + d.x + ")";
});
nodeUpdate
.selectAll("text.nodeText")
.text(function(d) {
return d.name;
})
.style("fill-opacity", 1)
.call(wrap, 130);
Текст больше не вписывается в перенос. Функция переноса взята из описанного выше стекового потока, проверьте ссылку.