让eval()识别VueJS eventBus

时间:2018-02-22 19:27:53

标签: javascript vue.js

我试图让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;
};

0 个答案:

没有答案