将函数名称存储在 JSON 文件中,然后能够从脚本中加载和调用它?
store the name of a function in a JSON file and later be able to load and call it from within a script?
那个标题有点乱码,这可能是重复的,但我已经研究了一段时间。这一定很简单。这个问题的公认答案对我不起作用:How to declare and use the name of a function from a json object?
任务:我正在尝试将 Vis.js
时间线的 set-up 数据外部化到 JSON 文件中。数据集没有问题,除了函数引用 "orderByID" 和 "visTemplate" 之外的所有选项也没有问题。这些是我定义的函数,它们存在于我正在处理 JSON 数据的脚本中。
当我尝试使用 JSON 而不尝试转换它时,Vis.js
抱怨。当我用下面的代码尝试上面问题的答案时,我得到了图像中显示的错误。
这在 Electron
中,脚本正在通过 index.html 中的脚本标签加载。
我等待 one-line 对这个花了很多时间描述的简单问题的回答。
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"
}
}
不确定您是否在 window 对象上设置了正确的引用,但您的代码不应该是这样的:
timelineOptions.order = window[timelineOptions.order];
您引用了字符串值 orderByID 而不是您用来设置对象的 属性 名称。
那个标题有点乱码,这可能是重复的,但我已经研究了一段时间。这一定很简单。这个问题的公认答案对我不起作用:How to declare and use the name of a function from a json object?
任务:我正在尝试将 Vis.js
时间线的 set-up 数据外部化到 JSON 文件中。数据集没有问题,除了函数引用 "orderByID" 和 "visTemplate" 之外的所有选项也没有问题。这些是我定义的函数,它们存在于我正在处理 JSON 数据的脚本中。
当我尝试使用 JSON 而不尝试转换它时,Vis.js
抱怨。当我用下面的代码尝试上面问题的答案时,我得到了图像中显示的错误。
这在 Electron
中,脚本正在通过 index.html 中的脚本标签加载。
我等待 one-line 对这个花了很多时间描述的简单问题的回答。
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"
}
}
不确定您是否在 window 对象上设置了正确的引用,但您的代码不应该是这样的:
timelineOptions.order = window[timelineOptions.order];
您引用了字符串值 orderByID 而不是您用来设置对象的 属性 名称。