1 回答
TA贡献1852条经验 获得超7个赞
我假设您为此使用了chartjs-plugin-zoom。
在chart传递给onPanComplete函数的对象中进行挖掘会发现该scales属性已更新以实现缩放功能。知道了这一点,检索包含label您正在寻找的属性的第一个和最后一个刻度对象是相当简单的。
下面是一个片段,演示了通过访问刻度onPanComplete并将它们输出到页面:
let ft = document.getElementById("ft"),
lt = document.getElementById("lt");
new Chart(document.getElementById("chart"), {
type: "line",
data: {
labels: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'],
datasets: [{
data: [0, 1, 2, 4, 8, 16, 32, 64, 128, 256]
}]
},
options: {
maintainAspectRatio: false,
scales: {
xAxes: [{
ticks: {
min: 'c',
max: 'h'
}
}]
},
plugins: {
zoom: {
pan: {
enabled: true,
mode: 'x',
onPanComplete: function({
chart
}) {
let ticks = chart.scales["x-axis-0"]._ticks;
ft.innerText = JSON.stringify(ticks[0]);
lt.innerText = JSON.stringify(ticks[ticks.length - 1]);
}
}
}
}
}
});
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1"></script>
<script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-zoom@0.7.4"></script>
<canvas id="chart" style="max-height:125px"></canvas>
<p>
First tick: <span id="ft"></span><br>Last tick: <span id="lt"></span>
</p>
添加回答
举报