这个标题有点乱码,这可能是重复但我已经挖了一段时间。这一定非常简单。这个问题的公认答案对我不起作用: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];
"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"
}
}
答案 0 :(得分:3)
不确定您是否在窗口对象上设置了正确的引用,但不应该读取您的代码:
timelineOptions.order = window[timelineOptions.order];
您已引用字符串值 orderByID ,而不是您用于设置对象的属性名称。