Rya*_*ure 6 html javascript css
我Chart.js用来在div中显示一个折线图<tr>.
<tr class="item">...</tr>
<tr class="item-details">
...
<div class="col-sm-6 col-xs-12 chart-pane">
<div class="chart-container">
...
<div><canvas id="future-chart"></canvas></div>
</div>
</div>
...
</tr>
Run Code Online (Sandbox Code Playgroud)
当页面被加载时,它item-details <tr>被隐藏,并且单击item <tr>上面的它将使它显示以及调用函数在画布中绘制图表.此功能如下所示:
$(document).on('click', '.item', function(){
var itemDetails = $(this).closest('tr').next('tr');
...
var canvas = itemDetails.find('#future-chart').get(0);
if (canvas) {
...
// just setting data here
var data = {
...
};
var options = {
responsive: true,
maintainAspectRatio: true
};
var futureChart = new Chart(context).Line(data,options);
}
});
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,如果我单击div显示屏幕大于767px(),然后再次单击隐藏,将屏幕大小调整为小于767px,再次打开tr,图表就消失了.
这是我能找到的唯一一个使图表消失的情况.如果我做与上面相反的事情,图表就会停留在那里.如果我<tr>打开并调整窗口大小,图表就可以了.
我已Responsive设置为True,并且图表在<tr>打开时正确调整大小并调整窗口大小.
我认为我需要在调整窗口大小时重新绘制画布,但是无论何时<tr>打开整个图表都应该重新绘制,所以我不确定究竟是什么导致了这个.
小智 5
我遇到了一个问题,在调整窗口大小时,图表消失了。我通过使用新命令仅创建一次图表解决了问题
this.myChart = new Chart(this.ctx, {
type: 'line', .....
}
Run Code Online (Sandbox Code Playgroud)
之后,我只update()在创建的图表上进行操作。事实上,每次创建图表都不会保存在内存中。更新示例datasets
this.myChart.data.datasets = datasetsTmp;
this.myChart.update();
Run Code Online (Sandbox Code Playgroud)
我希望它有帮助。