У меня есть несколько вложенных JSON файл:Простая функция не работает в случае, заявление
{
"name": "1370",
"children": [
{
"name": "Position X",
"value": -1
},
{...}
]
"matches": [
{
"certainty": 100,
"match": {
"name": "1370",
"children": [
{
"name": "Position X",
"value": -1
},
{...}
]
}
}
]
}
Я хочу, чтобы отобразить его с помощью модифицированного Collapsible Tree. Я хочу отображать «совпадение» и «уверенность» при зависании соответствующего узла. Для этого я использовал simple tooltip example.
Теперь у меня есть что-то вроде этого:
var nodeEnter = node.enter().append("g")
...
.on("mouseover", function(d) {
if (d.matches) {
return tooltip.style("visibility", "visible")
.text(function(d) { return d.name; });
}
})
...
;
Я просто с помощью d.name для тестирования. Я хочу написать более сложную функцию позже. Но это не работает вообще. Я получаю всплывающую подсказку, но она пуста (или содержит значение по умолчанию). Точка, которую я не понимаю, что следующие работы:
if (d.matches) {
return tooltip.style("visibility", "visible")
.text(d.name);
}
Поэтому мне кажется, что функция не работает в данный момент. Что я делаю не так?
слишком много вложенных логик. Мне непонятно, что возвращается к чему. Для отладки удалите условие 'if (d.matches)'. Это не имеет значения. Почему вы возвращаете 'd.name'? Разве вы не должны использовать его, как вы это делали во втором примере? '.text (d.name);' – m59
Что вы ожидаете от параметра «d» в вашем обработчике «mouseover»? Это будет объект Event, независимо. – Pointy
@Pointy Это обработчик событий в контексте 'd3'. Следовательно, 'd' в обработчике' mouseover' будет 'data', связанным с этим узлом. –