2

我正在尝试向我的 HighChart 动态添加一个菜单项,以支持具有动态生成的函数名称的动态向下钻取。当使用像警报这样的静态定义函数时,我能够成功地将新的 menuItems 添加到现有的 contextButton 中,但是,当我使用 var 定义一个函数时,它不会调用正确的函数。以下工作:

var chartOptions = {
        chart: {
            renderTo: myChartDiv,
            zoomType: 'x',
            type: 'area'
            }, 
        exporting: {
            enabled: true,
            buttons: {
                contextButton: {
                    menuItems: [{
                        text: 'My Test',
                        onclick: function() {
                            alert('success!');
                        }
                    }]
                }}
            }};

但是,只要我想添加一个具有在变量中定义的函数的新菜单项,就会跳过该变量定义的调用。IE:

var c1 = "chart1";
var c2 = "chart2";
var drilldownMethod = "toggleCharts('" + c1 + "','" + c2 + "')";
var newDrilldown = {
    text: Show Chart 2,
    onclick: function () {alert('test1'); drilldownMethod; alert('test2') }
};
chartOptions.exporting.buttons.contextButton.menuItems.push(newDrilldown);

我确实看到了新的菜单项“显示图表 2”,当我单击它时,确实会出现警报“test1”和“test2”;但是,从不调用字符串变量“drilldownMethod”中的函数(该方法中也有一个警报来证明这一点)。

关于如何做到这一点的任何想法?

4

1 回答 1

1

drilldownMethod是一个字符串,而不是一个函数调用,这就是你看不到它执行的原因。这应该有效:

chartOptions.exporting.buttons.contextButton.menuItems.push({
    text: 'Show Chart 2',
    onclick: function () {
        toggleCharts("chart1", "chart2");
    }
});
于 2013-05-23T16:26:21.587 回答