2013-05-20 2 views
10

Я хочу, чтобы иметь возможность вернуть HTML из функции текста, как это:Как вернуть html в текстовую функцию d3?

textEnter.append("tspan") 
      .attr("x", 0) 
      .text(function(d,i) { 
      return 'some text' + '<br/>' + d.someProp; 
      }) 

Пытались использовать &lt;br&gt;, но didnot работу. Как мне это достичь?

+2

Я не знаю о d3, но я заметил, что вы устанавливаете текст как код html. Не можете ли вы сделать что-то вроде '.html' или' .innerHTML' вместо '.text()'? – BBog

ответ

14

EDITED ОТВЕТ

Просто заметил, что вы работаете с tspan здесь. К сожалению, вы не можете вставлять разрывы строк в текстовые элементы svg. Многострочный текст с SVG требует разбивки текста самостоятельно, а затем его выделения, установив атрибут dy. D3 делает процесс прокладки довольно прямой, но он по-прежнему требует дополнительной работы.

Более подробная информация в интро пункта здесь: http://www.w3.org/TR/SVG/text.html

OLD ОТВЕТ (применяется при использовании HTML-элементов, а не SVG)

D3 имеет отдельный метод для этого: метод html(), который работает только как text(), но неэкономленный. More info here. Итак, достаточно легко, вам просто нужно:

textEnter.append("tspan") 
     .attr("x", 0) 
     .html(function(d,i) { 
     return 'some text' + '<br/>' + d.someProp; 
     }) 
+2

не работает по какой-либо причине – Isaac

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