我试图让eval()在被调用时识别VueJS eventBus。
以下是我尝试评估的代码示例:
eval("eventBus.$emit('eventName');");
但我收到错误" eventBus未定义,尽管eventBus正在导入并在eval函数之外工作。
是否有将eval的范围设置为Vue实例的范围,以便识别eventBus?
任何帮助将不胜感激!谢谢!
更多信息
在我的项目中,我使用Blockly,它通过处理设置为块的代码串并在其上调用eval()来运行单独的块代码。
这是我的runCode方法,在VueJS组件内部
.....
runCode: function() {
// Generate JavaScript code and run it.
window.LoopTrap = 1000;
Blockly.JavaScript.INFINITE_LOOP_TRAP =
'if (--window.LoopTrap == 0) throw "Infinite loop.";\n';
var code = Blockly.JavaScript.workspaceToCode(this.workspace);
Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
try {
eval(code); //Eval call here
} catch (e) {
alert(e);
}
},
....
这是设置映射到我想要执行的块的代码的通用版本。
Blockly.JavaScript['blockName'] = function(block) {
let code = "eventBus.$emit('eventName');";
return code;
};