我需要禁用图例单击显示/隐藏图表元素的默认行为。 我尝试过这样做,但它不起作用。我试过像
这样的代码Ext.each(chart.legend.items, function(item) {
item.un("mousedown", item.events.mousedown.listeners[0].fn);
})
但它不适用于ExtJs 4.2
如果有人事先这样做,请告诉我。
答案 0 :(得分:2)
您错过了un
电话中的范围。它需要引用相同的函数和相同的范围才能工作(docs)。所以,这应该取消注册鼠标监听器:
Ext.each(chart.legend.items, function(item) {
item.un("mousedown", item.events.mousedown.listeners[0].fn, item);
});
但这可能不会起作用,因为每次重绘图表时都会重新创建图例项。这是一个覆盖,为clickable
添加Ext.chart.Legend
选项。
Ext.define('Ext.ux.chart.LegendItem.Unclickable', {
override: 'Ext.chart.LegendItem'
,onMouseDown: function() {
if (this.legend.clickable !== false) {
this.callParent(arguments);
}
}
,onMouseOver: function() {
if (this.legend.clickable !== false) {
this.callParent(arguments);
}
}
,onMouseOut: function() {
if (this.legend.clickable !== false) {
this.callParent(arguments);
}
}
});
Ext.create('Ext.chart.Chart', {
// ...
legend: {
clickable: false
}
});