无法从另一个javascript文件中引用javascript数组

时间:2017-07-04 14:13:06

标签: javascript arrays highcharts

我正在尝试使用highcharts创建一个图表,其中我无法获取存储在另一个js文件中的数据。

我的main.js文件包含创建图表的所有代码。它有一系列的部分。

series: [{
            name: 'Desktops',
            data: '/data/desktop.js',
            tooltip: {
                valueDecimals: 2
            }
        }]

这里我想引用另一个js文件中的数据。文件的名称是desktop.js,它只有下面的数组

var desktopData = [[1475272800000, 117759], [1475359200000, 106147], [1475445600000, 147747], [1475532000000, 302031], [1475618400000, 520539], [1475704800000, 245353], [1475791200000, 180376], [1475877600000, 78819], [1475964000000, 90466], [1476050400000, 257822], [1476136800000, 284465], [1476223200000, 242898], [1476309600000, 297186], [1476396000000, 268069], [1476482400000, 183149], [1476568800000, 410442], [1476655200000, 1117798], [1476741600000, 1274668], [1476828000000, 1331799], [1476914400000, 1230213], [1477000800000, 888251], [1477087200000, 572050], [1477173600000, 931144], [1477260000000, 1556641], [1477346400000, 1526736], [1477432800000, 1310133], [1477519200000, 1207422], [1477605600000, 785556], [1477692000000, 487264], [1477778400000, 787714], [1477868400000, 942663]];

我如何引用另一个文件中定义的数组?

1 个答案:

答案 0 :(得分:0)

您使用任何类型的框架吗?要在另一个文件中加载JS文件,您需要以某种方式要求它,使用AMD,ES导入或任何其他方式(无论是同步还是异步)。

如果您只是将文件添加到HTML(使用脚本标记),那么您唯一要做的就是确保加载文件(DOMContentLoaded事件)然后,您必须将数据附加到全局范围。

浏览器中的全局范围称为window,每当您使用var未在范围中声明的变量时,这意味着JS正在全局范围内搜索它。为了将某些内容分配给全局范围,您可以省略var或明确地分配它:

window.desktopData = [];

// And then in another file, assuming that the data is ready

var myData = window.desktopData

还请记住,在<script>标签中包含文件通常意味着它们会阻止您的浏览器并且文件的顺序很重要(至少当您想要依赖于另一个文件之前已加载的文件的事实时) )。我建议使用某种导入系统:

http://requirejs.org/docs/whyamd.html