vue.js - 在 VueJS 组件中导入使用 getElementById 的模块

标签 vue.js vuejs2 blockly

我正在尝试将 Blockly(通过来自 npm 的节点 block )导入 VueJS 组件,但 Blockly 的 javascript 部分包含 getElementById() 调用,这会导致错误,如 document.getElementById() 在 VueJS 中不可用。

知道如何解决这个问题吗?

(编辑)代码示例:

<template> 
 <div class="hello"> 
   <div id="blocklyDiv" style="height: 480px; width: 600px;">
   </div> 
    <xml id="toolbox" ref=toolbox style="display: none"> 
     <block type="controls_if"></block> 
     <block type="text"></block> <block type="text_print"></block> 
    </xml> 
   </div> 
</template> 
<script> 
 import Blockly from "node-blockly" 
 export default { name: 'hello' } 
 var workspace = Blockly.inject('blocklyDiv', {toolbox: document.getElementById('toolbox')}); 
</script>

最佳答案

我想是 v2。

尝试 mounted event

<template> 
 <div class="hello"> 
   <div id="blocklyDiv" style="height: 480px; width: 600px;">
   </div> 
    <xml id="toolbox" ref=toolbox style="display: none"> 
     <block type="controls_if"></block> 
     <block type="text"></block> <block type="text_print"></block> 
    </xml> 
   </div> 
</template> 
<script> 
 import Blockly from "node-blockly" 
 export default { 
   name: 'hello',
   data(){
     return {
       workspace: null
     }
   },
   mounted(){
     this.workspace = Blockly.inject('blocklyDiv', {toolbox: document.getElementById('toolbox')});
   }
 } 
</script>

关于vue.js - 在 VueJS 组件中导入使用 getElementById 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42236989/

相关文章:

javascript - 我想让 v-card 透明,但它不能正常工作

vue.js - 防止 vue-router 打开相同的路径

vue.js - 在 Vue 2 中使用 Axios 调用 Promise

javascript - Vue - 如何将父引用作为 Prop 传递给子?

vue.js - 使用 Vue.js 的用户可切换自定义主题

javascript - Mocha 与 Vue : Resolution method is overspecified

c++ - C++ 项目中的 block 状编辑器

javascript - 如何动态生成 Blockly 下拉菜单的内容?

warnings - VUE variable.length 在模板中有效,但给出控制台警告

javascript - 无需评估即可从用户提供的字符串生成自定义 Blockly block