重绘后悬停在 ChartJS 条形图上的问题
Problems hovering over ChartJS bar chart after being redrawn
我正在使用带有KnockoutJS的ChartJS,我在排序我的一个条形图时遇到了一些问题。
下面是一个示例:http://jsfiddle.net/norbiu/aqa8w19d/
点击顶部的排序按钮后,条形图会正确重绘,但是如果我尝试将鼠标悬停在图表的右侧,它会跳回条形的原始顺序。移除鼠标将使条形返回到整列顺序。
我做错了什么吗?
这是我的更新功能:
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var ctx = element.getContext('2d'),
type = ko.unwrap(valueAccessor()),
data = ko.toJS(allBindings.get('chartData')),
options = ko.unwrap(allBindings.get('chartOptions')) || {};
if (chart) {
chart.destroy();
delete chart;
}
if (Object.keys(data).length != 0) {
var chart = new Chart(ctx)[type](data, options);
}
}
在创建新图表之前,应修改chartType
绑定处理程序以明确以前创建的图表。否则,悬停在新图表的区域将干扰旧图表的区域。
ko.bindingHandlers.chartType = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
if (!allBindings.has('chartData')) {
throw Error('chartType must be used in conjunction with chartData and (optionally) chartOptions');
}
},
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var ctx = element.getContext('2d'),
type = ko.unwrap(valueAccessor()),
data = ko.toJS(allBindings.get('chartData')),
options = ko.unwrap(allBindings.get('chartOptions')) || {};
if (chart) {
console.debug(chart)
chart.destroy();
delete chart;
}
if (Object.keys(data).length != 0) {
// destroy old chart
var self = ko.bindingHandlers.chartType;
self.chart && self.chart.destroy();
// create new
var chart = new Chart(ctx)[type](data, options);
self.chart = chart;
}
},
chart: null
};
http://jsfiddle.net/aqa8w19d/1/
更新
是的,上面的处理程序将当前图表存储在其定义中,因此chartType
绑定的所有实例共享相同的属性ko.bindingHandlers.chartType.chart
。这个问题可以通过为每个绑定元素单独存储每个图表对象来解决(例如,作为元素用户属性<canvas>
):
if (Object.keys(data).length != 0) {
// destroy old chart
element.chart && element.chart.destroy();
// create new
var chart = new Chart(ctx)[type](data, options);
element.chart = chart;
}
更新的小提琴:http://jsfiddle.net/aqa8w19d/3/
相关文章:
- Chart.js 2.1.2条形图动画问题
- 从数组在d3中创建条形图时出现问题
- 为条形图定制Chart new.js的问题
- d3.js条形图问题
- 重绘后悬停在 ChartJS 条形图上的问题
- 规范化堆叠条形图绘图问题.无论数据如何,所有矩形均等划分
- 更新 D3 条形图时调用 svg 元素的宽度的问题
- 高图表条形图布局问题
- 使用交叉过滤器在 dc js 中对条形图的数据进行分组时遇到问题
- 条形图 d3.js 的颜色出现问题
- D3堆积条形图添加数据标签并解决D3标签放置问题
- 使用 D3 网格问题和控制台错误的分组条形图
- 使用 D3 对齐问题的多/分组条形图
- D3 分组条形图创建问题
- Dojo图表问题:使用数组的条形图(ClusteredColumns)
- JQPlot渲染垂直堆叠条形图和水平图例时出现问题
- Chrome中的粘性顶部条形图渲染问题
- 流程图问题连接条形图和线形图
- 谷歌条形图显示日问题
- Chartkick Rails 4条形图问题与多个图表