如何更改highcharts的本地功能

时间:2014-03-15 08:05:25

标签: javascript plugins highcharts closures

Highcharts.numberFormat是指向Highcharts闭包中的本地函数的指针。 Highcharts在内部使用本地函数。怎么有人可以将原始源之外的这个(或者封闭内的任何其他本地函数,如dateFormat等)更改为插件或其他东西?

3 个答案:

答案 0 :(得分:2)

我认为你的问题是改变内部函数在闭包中的行为。

就我理解高图的src而言,除非你编辑源文件,否则无法改变闭包内定义的内部函数(我不建议这样做在所有)。

这背后的原理是,库本身将这些函数用于内部目的,因此这些函数的更改将导致库的不良行为。

希望我有道理。

答案 1 :(得分:1)

您可以这样使用wrap()函数:

http://www.highcharts.com/docs/extending-highcharts

答案 2 :(得分:1)

以下是一种可以覆盖numberFormat:http://jsfiddle.net/4hdbY/2/

的方法
(function (Highcharts, UNDEFINED)
{   "use strict";

    if ( ! Highcharts )
    {
        return;
    }

    var numberFormat_orig = Highcharts.numberFormat;
    Highcharts.numberFormat = function ( value ) 
    {
        // the original number formatter
        // return numberFormat_orig.apply(this, arguments);

        // your custom code 
        return '~' + Math.round(value);
    };

}(Highcharts));

该解决方案是根据Highcharts-excension规则设计的。

我非常怀疑,您应该覆盖默认的数字格式化程序,相反,您也可以调用自定义函数,甚至将其绑定到Highcharts。根据显示的代码,我很容易做到这一点。 请参阅使用的代码:

tooltip: {
  valueSuffix: '°C' , 
  formatter: function() {
    return '<b> Temperature: '+ Highcharts.numberFormat(this.y) + '°C</b><br/>'+ 'in Month: '+ this.x;
  }
}

这可以很容易地修改,使用你自己的功能。