В настоящее время я использую схему силы d3 для этого проекта. В настоящий момент, когда я нажимаю на узел, он показывает «детали» или имя узла на панели и показывает соседние узлы. Я хотел бы добиться этого, когда я выберу из раскрывающегося списка. Это означает, что пользователь может либо щелкнуть по узлу, чтобы получить «детали», либо выбрать из раскрывающегося списка, чтобы увидеть подробности. Я думал использовать d3.dispatch, однако мне трудно понять это.имитирующий щелчок узлов на d3.html из выпадающего меню/выберите
Я упомянул ответы, как putting the country on drop down list using d3 via csv file. Если я правильно понимаю ответ, он имитирует щелчок выбора.
function searchNode() {
//find the node
var selectedVal = d3.event.target.value;
if (selectedVal == d.code) {
//alert(selectedVal)
showNodePanel(node);
};
}
Вы можете сослаться на мои коды на http://plnkr.co/edit/E8MfM6wfbt56i8nkf3Ym?p=preview В данный момент, когда я выбираю из выпадающего списка, он показывает пустую панель. Пожалуйста, можете ли вы направлять меня в правильном направлении с хорошим объяснением, поскольку я совершенно новичок в d3. Заранее спасибо
Спасибо! Это работает блестяще. Позаботьтесь дать некоторое объяснение? Насколько я понимаю, вы создали переменную «name» для захвата значения из выпадающего списка. Затем вы сопоставляете имя, которое было записано в раскрывающемся списке с узлами, используя .filter и помещая его в массив [0]. На основе фильтра массива вы вызываете функцию showNodePanel. Можете ли вы это подтвердить? Я все еще ноб, и я надеюсь, что с некоторыми объяснениями это поможет всем нубам, таким как я там. Благодаря! –
Большинство вашего понимания правильное, кроме одного. Функция «фильтр» JavaScript-массива возвращает массив всегда. В этом коде, поскольку имя уникально, будет только один элемент массива, который соответствует выбранному имени. Таким образом, размер массива, возвращаемый функцией фильтра, будет равен 1. Таким образом, мы берем соответствующий узел с индексом 0. Таким образом, вы получаете нужный узел и просто должны передать этот узел функции 'showNodePanel', чтобы показать его детали. – Gilsha
Спасибо за расширенное усилие, объяснив это хорошо. Действительно ценю это. –