禁用图例单击ExtJs条形图的事件

时间:2014-01-14 05:03:14

标签: extjs

我需要禁用图例单击显示/隐藏图表元素的默认行为。 我尝试过这样做,但它不起作用。我试过像

这样的代码
Ext.each(chart.legend.items, function(item) {
item.un("mousedown", item.events.mousedown.listeners[0].fn);
})

但它不适用于ExtJs 4.2

如果有人事先这样做,请告诉我。

1 个答案:

答案 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
    }
});