javascript - 如何将外部 javascript 插入到 Vue 组件中

标签 javascript vuejs2 vue-component

我正在尝试将自定义 JavaScript(草图绘制器)插入到 Vue 组件中,但到目前为止还没有成功。当我尝试将 javascript 直接插入到模板中时,如下所示:

<template>
    <div id="sketcher">
        var sketcher = new ChemDoodle.SketcherCanvas('sketcher', 400, 300);
    </div>
</template>

我收到错误:“模板应该只负责将状态映射到 UI。避免在模板中放置具有副作用的标签,例如 ,因为它们不会被解析。” 我的另一个尝试是在不同的 .js 文件中创建一个组件并将其导入到 Vue 组件中。

草图绘制器.js:

export default ({
  mounted(){    
   return new ChemDoodle.SketcherCanvas('sketcher', 400, 300)
  }
})

首页.vue

<template>
    <div id="sketcher">
       <app-sketcher></app-sketcher>
    </div>
</template>

<script>
import sketcher from './sketcher';    
export default {
    components: {
    "app-sketcher": sketcher
    }
}
</script>

但我收到此错误:“无法安装组件:模板或渲染函数未定义”。我非常感谢任何有关如何解决此问题或提出将 javascript 嵌入到 Vue 组件的其他选项的建议。

最佳答案

您的第一条错误消息是不言自明的:您不能输入 <script>标签 <template>单文件 Vue 组件。

在第二个示例中,您没有为 app-sketcher 定义模板。当您在 Home.vue 中注册它时,组件文件。您的sketcher.js文件仅导出 mounted 的定义钩子(Hook),没有别的。

<小时/>

你可以做一个Sketcher.vue文件:

<template>
  <div id="sketcher"></div>
</template>

<script>
export default {
  mounted() {    
    return new ChemDoodle.SketcherCanvas('sketcher', 400, 300)
  }
}
</script>

然后使用导入它并在您的 Home.vue 中使用它像这样的文件:

<template>
  <app-sketcher/>
</template>

<script>
import AppSketcher from './Sketcher';    
export default {
  components: { AppSketcher }
}
</script>

关于javascript - 如何将外部 javascript 插入到 Vue 组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962971/

相关文章:

javascript - 将表格内的行显示到 <p> 下有一个文本区域

javascript - 像浏览器中的移动应用程序一样创建动画

typescript - 基于类的vue组件的标签名称是什么

javascript - 访问和过滤在 Vue.js 组件的 <slot> 中定义的子组件

css - 绑定(bind) Vuetify 数据表的样式,以便排序箭头始终与标题位于同一行 - 而不是在下方?

javascript - 使用 Typescript 允许 React 组件上的任意数据-* 属性

javascript - 缺少类属性转换 react

javascript - 等待 aysnc 调用每个

javascript - 在 vue2-google-maps 中围绕一个点画一个圆圈

javascript - Vue.js 组件的 Created() 顺序是如何设置的?