Я знаю, что об этом спрашивали много раз. Я попробую все решения, которые я нашел, но я совершенно уверен, что что-то упустил или, возможно, я не понимаю, как это работает.
Я пытаюсь построить каскадный выпадающий список из загруженного json. Вот код, который я построил до сих пор
//retrieving alert data from db
const url_data = ("../../app/predictive/config/query.php");
var pred = d3.json(url_data).then(function(data) {
var dataset = d3.values(data);
console.log(dataset);
//nesting the array by brand Key
var nest = d3.nest()
.key(function(d) { return d.brand; })
.entries(dataset);
console.log(nest)
//populate brand select from array
var select = d3.select('#advertiser').selectAll('option')
.data(nest).enter()
select.append('option')
.text(function(d, i) {
return '' + d.key + ''})
//appending attribute value to select option
.attr("value", function (d, i) {
return d.key;})
// var select2 = d3.select('#media').selectAll('option')
var brand_sel = d3.select('select')
.on("change",function(d){
var selected = d3.select("#advertiser").node().value;
console.log( selected );
//filter array on the first select
var media =nest.filter(function(d) {
return d.key == selected
})
console.log(media)
var select2 = d3.select('#media').selectAll('option')
.data(media)
.enter()
select2.append('option')
.text(function(d, i) {
return d.brand })
console.log(select2)
});
})
. Теперь у меня первый выпадающий список заполнен правильно, но я не могу заполнить второй. Вот condole.log (media):
0:
key: "APPLE"
values: Array(2)
0:
id_alert: 2
advertiser: "Q8"
brand: "Q8 CARBURANTI"
first_seen_media: "italia 1"
first_seen: "2020-01-08"
last_seen: "2020-01-08"
media_type: "TV"
description: "none"
1:
id_alert: 3
advertiser: "Q8"
brand: "Q8 CARBURANTI"
first_seen_media: "other"
first_seen: "2020-01-10"
last_seen: "2020-01-10"
media_type: "DIGITAL"
description: "OTHER"
Внутри select2 я получаю пустой выпадающий список вместо того, чтобы заполнить поле media_type
Я надеюсь, что кто-то может помочь мне, потому что я много читаю и мои глаза говорят, что я нахожу другой способ
Как вы, наверное, понимаете, я также плохо знаком с D3 и javascritp, и я изучаю обучение, выполняя
большое спасибо за любую помощь