切换系列时避免数据重置
Avoid data resetting when toggling series
在这个 fiddle 中,当您 toggle
一个系列时,其他人将重置为它们的初始值,而不是为自己添加新值。
如何避免这种行为?
在启用检查中清空或重置相应数据集之前,您需要存储每个系列数据的当前状态。然后使用这个保存的状态。
SP 数据集示例
状态初始化(spData)。我还初始化了数据集 (SP)
var spData = [1, 2, 3, 4, 5, 6, 7, 8]
var SP = {}
保存状态(在 enableCheck() 中)- 我从实际数据点获取值
if (SP.data) currentChart.datasets.forEach(function (d) {
if (d.label === 'My First dataset') {
spData = d.points.map(function (e) {
return e.value
});
}
})
使用这个保存的状态(在 enableCheck() 中)
SP = {
label: "My First dataset",
fillColor: "rgba(0,0,0,0)",
strokeColor: "rgba(220,0,0,1)",
pointColor: "rgba(220,0,0,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,0,0,1)",
data: spData
};
如果您还想为隐藏系列插入新值,请更新 setTimeout
中的数据插入语句
var d = []
if (First) d.push(randomScalingFactor())
else {
spData.shift()
spData.push(randomScalingFactor())
}
if (Second) d.push(randomScalingFactor())
else {
ncData.shift()
ncData.push(randomScalingFactor())
}
if (Third) d.push(randomScalingFactor())
else {
spaData.shift()
spaData.push(randomScalingFactor())
}
工作 fiddle - http://jsfiddle.net/Lsg37amf/
在这个 fiddle 中,当您 toggle
一个系列时,其他人将重置为它们的初始值,而不是为自己添加新值。
如何避免这种行为?
在启用检查中清空或重置相应数据集之前,您需要存储每个系列数据的当前状态。然后使用这个保存的状态。
SP 数据集示例
状态初始化(spData)。我还初始化了数据集 (SP)
var spData = [1, 2, 3, 4, 5, 6, 7, 8]
var SP = {}
保存状态(在 enableCheck() 中)- 我从实际数据点获取值
if (SP.data) currentChart.datasets.forEach(function (d) {
if (d.label === 'My First dataset') {
spData = d.points.map(function (e) {
return e.value
});
}
})
使用这个保存的状态(在 enableCheck() 中)
SP = {
label: "My First dataset",
fillColor: "rgba(0,0,0,0)",
strokeColor: "rgba(220,0,0,1)",
pointColor: "rgba(220,0,0,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,0,0,1)",
data: spData
};
如果您还想为隐藏系列插入新值,请更新 setTimeout
中的数据插入语句var d = []
if (First) d.push(randomScalingFactor())
else {
spData.shift()
spData.push(randomScalingFactor())
}
if (Second) d.push(randomScalingFactor())
else {
ncData.shift()
ncData.push(randomScalingFactor())
}
if (Third) d.push(randomScalingFactor())
else {
spaData.shift()
spaData.push(randomScalingFactor())
}
工作 fiddle - http://jsfiddle.net/Lsg37amf/