2016-03-28 2 views
0

Я очень новичок в d3.js и хочу преобразовать эту кодовую ручку: http://codepen.io/budelman/pen/NqZwpm Я нашел угловую директиву. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что в угловой директиве я имею доступ только к одному «элементу». Я не могу понять, как добавить легенду текстового поля div # в мой угловой код.Append D3 Element in Angular Directive

Я пробовал:

// Shove the text into the div with ID #textbox    
svg.append('div') 
.attr('id','textbox') 
.select("#textbox") 
.text(string); 
}) 

Но это не работает. Может ли кто-нибудь указать мне в правильном направлении? Спасибо!

+0

Вы используете [метод цепочки] (http://alignedleft.com/tutorials/d3/chaining-methods), что означает, что когда вы вызываете '.select (" # textbox ")' он ищет элемент с id 'textbox' в' div', который вы добавили, потому что вы связали его с методом, который возвратил div. Либо полностью избавитесь от строки выбора, либо измените ее на 'svg.select (« # textbox ») ...' – JSBob

ответ

0

это то, что у вас есть в исходном коде,

.on("mouseover", function(d) { 
      //some code 

      // Shove the text into the div with ID #textbox 
      d3.select("#textbox") 
       .html("") 
       .append("text") 
       .html(string); 
     }) 

означает, что вы просто нужно пустой DIV с идентификатором, а затем вставьте HTML в него. Я не уверен, почему вы пытаетесь добавить #textbox, а затем вставьте html. просто в вашей директиве. таким образом вы можете самостоятельно выбрать только с помощью d3

+0

Моя цель - создать угловую директиву для обертывания карты и легенды (текстовое поле). В конце концов, html-код будет просто чем-то вроде Stella

+0

, это нормально. поместить все в шаблон директивы –

0

Я понял, насколько глупым этот вопрос был. Все, что мне нужно, чтобы добавить новый DIV к элементу, выполнив:

d3.select(element[0]).append("div").attr("id","textbox");