【发布时间】:2019-09-16 23:41:16
【问题描述】:
我想导入一个 JS 文件以在浏览器中与模板一起运行。我尝试了this,但它不起作用,因为我需要在我的脚本运行之前加载所有内容。
让我给你看有问题的vue文件:
<template>
<div id="canvaspage">
<canvas id="canvas"></canvas>
<div id="buttonlist">
<h5>Select your action:</h5>
<div class="col">
<button id="btn1">JS file custom action 1</button>
<button id="btn2">JS file custom action 2</button>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'CanvasPage'
}
</script>
...
看到模板上的画布和按钮了吗?我想用纯 JS 和它交互。
以下是 JS 文件尝试执行的示例:
let canvas = document.getElementById('canvas')
let button1 = document.getElementById('btn1')
let button2 = document.getElementById('btn2')
canvas.addEventListener('click', () => {
console.log('Canvas clicked')
})
button1.addEventListener('click', () => {
console.log('Button 1 clicked')
})
button2.addEventListener('click', () => {
console.log('Button 2 clicked')
})
如果我尝试上面链接的解决方案,会发生'canvas'、'button1'和'button2'都是空的,因为 JS 找不到它们。如何让它在 Vue 上运行?
【问题讨论】:
-
你应该把它打包到一个合适的 ES6 模块中来导出一个函数。然后可以从 Vue 应用程序的上下文中调用此函数。当然,您需要先导入它。您应该避免与 Vue 在外部脚本中管理的 DOM 元素进行交互。特别是不要使用 ID,因为 ID 在单个页面上必须是唯一的(您不能在同一页面上重复使用该组件)。如果 Vue 刚刚从 DOM 中删除了你的元素(例如路由到另一个页面),你的脚本将会崩溃。
标签: vue.js