将函数的名称存储在JSON文件中,以后能够从脚本中加载和调用它吗?

时间:2017-01-26 01:12:37

标签: javascript electron vis.js

这个标题有点乱码,这可能是重复但我已经挖了一段时间。这一定非常简单。这个问题的公认答案对我不起作用:How to declare and use the name of a function from a json object?

任务:我正在尝试将Vis.js时间轴的设置数据外部化为JSON文件。数据集没有问题,也没有除函数引用之外的所有选项," orderByID"和" visTemplate"。这些是我定义的函数,它存在于我使用JSON数据的脚本中。

当我尝试使用JSON而不尝试转换它时,Vis.js会抱怨。当我使用下面的代码尝试上述问题的答案时,我会在图像中显示错误。

这是在Electron中,脚本是通过index.html中的脚本标记加载的。

我在等待这个简单问题的单行答案,这个问题花了很多时间来描述。

console.log(' timelineOptions.order', timelineOptions.order);
console.log(' timelineOptions.template', timelineOptions.template);
console.log('this', this);
console.log('window', window);

timelineOptions.order = window[timelineOptions.orderByID];
timelineOptions.template = window[timelineOptions.visTemplate];

enter image description here

 "timelineOptions": {
    "order": "orderByID",
    "selectable": true,
    "zoomable": false,
    "width": "100%",
    "height": "90%",
    "minHeight": 700,
    "format": {
        "minorLabels": {
            "hour": "HH\\h"
        }
    },
    "margin": {
        "axis": 20,
        "item": 20
    },
    "start": "2016-12-30",
    "end": "2017-01-4",
    "template": "visTemplate",
    "showCurrentTime": false,
    "dataAttributes": "all",
    "timeAxis": { "scale": "day", "step": 1 },
    "orientation": {
        "axis": "top",
        "item": "top"
    }
}

1 个答案:

答案 0 :(得分:3)

不确定您是否在窗口对象上设置了正确的引用,但不应该读取您的代码:

timelineOptions.order = window[timelineOptions.order];

您已引用字符串值 orderByID ,而不是您用于设置对象的属性名称。