Использование let
делает вашу переменную labels
и values
локализованной.И, таким образом, вы больше не можете получать новые данные при изменении их размера.
Есть много способов решить их, я не уверен, каковы ваши предпочтения.Однако для удобства я предпочитаю найти место для сохранения нужных мне данных, а не каждый раз звонить.
Я создам место для хранения своих данных, чтобы я мог ссылаться на него при изменении размера.
var data_obj = new Object();
($(function()
...//other code
$("#six_hour").click(function() {
$(this).addClass('active').siblings().removeClass('active');
data_obj.current_button = 'six_hour';
if (!("sixhour" in data_obj)){
getResult("sixhour").done(function(data) {
let labels = data.time_stamp;
let values = data.values;
data_obj.six_hour = {labels: labels, values:values}
});}
drawLineChart(data_obj.six_hour.values, data_obj.six_hour.labels);
})
$(window).resize(function(){
drawLineChart(data_obj[data_obj.current_button].values, data_obj[data_obj.current_button].labels);
});
})
Кроме того, я думаю, что это хорошая идея - перерисовывать график каждый раз, когда вы изменяете размер.В самом деле, если ваш размер данных будет громоздким, он будет отставать.Попробуйте для этого определить некоторый диапазон размеров, например, если размер окна <1000, затем перерисовать и т. Д. </p>
Обновление 13/6/2018
Я выяснил, чтоЯ действительно делаю опечатку после того, как я действительно пишу это ... Хотя я первоначально думаю, что обеспечение идеи достаточно красиво ...
Я пишу JSfiddle , вы можете увидеть после нажатия кнопки вы можете изменить размер диаграммы, используя новые данные.
Если вы не хотите кэшировать данные, просто удалите тег 'six_hour' в объекте, используя
data_obj = {labels: labels, values:values}
вместо
data_obj.six_hour = {labels: labels, values:values}
А также удалить if (!("sixhour" in data_obj))