У меня есть горизонтальная гистограмма с накоплением на одной странице, и каждая диаграмма изменяется в зависимости от того, что выбирает пользователь (выпадающий выбор). У меня есть вызов ajax, который извлекает данные, поэтому данные меняются и являются динамическими в зависимости от выбора пользователя. У меня проблема с очисткой старых данных. Если данных нет, должна отображаться горизонтальная гистограмма. Но он отображает предыдущие данные. он не становится пустым, если нет данных. По сути, я просто хочу после каждого выбора повторно инициализировать диаграмму и начинать с нуля. Как я могу это сделать?
<script type = "text/javascript" >
var series;
$("#sub_project3").change(function() {
$.ajax({
url: "<?php echo base_url("
Manage_procurement_plan / load_bar_chart ");?>",
type: "POST",
data: {
drop_value: $(this).val()
},
dataType: "text",
cache: false,
success: function(data) {
series = data;
var dom = document.getElementById("main");
var myChart = echarts.init(dom);
var app = {};
var option;
getBarGraph(series);
function getBarGraph(data) {
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
top: '3%',
},
grid: {
top: '28%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'value',
},
yAxis: {
type: 'category',
data: ['Actual Avg', 'ADB Min Standard']
},
series: JSON.parse(data),
};
/*if (option && typeof option === 'object') {
myChart.setOption(option);
}*/
myChart.setOption(option);
}
}
});
});
</script>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Каждый раз, когда вы делаете новый выбор, вы можете «повторно инициализировать» свой series (сделать его пустым списком), прежде чем добавлять в него новые данные. Поэтому, если данных нет, series останется пустым.
Затем вы можете обновить свою диаграмму, используя notMerge = true. Согласно диаграмма док :
notMergeOptional. Whether not to merge with previous option.
falseby default, means merge, see more details in Component Merging Modes. Iftrueall of the current components will be removed and new components will be created according to the new option.
myChart.setOption(option, true);
То, что вы ищете, это notMerge параметр setOption. Я добавил это в свой ответ, теперь он должен работать.
Я устал. Но это не сработало. В моем коде данные серии становятся пустыми. Но он обновляет диаграмму с пустыми данными. Если данные серии пусты, отображается диаграмма с предыдущими данными. Если есть диаграмма данных серии, она обновляется. Ваша поддержка высоко ценится.