VueJS访问Vue组件中的外部导入方法

Pat*_*han 5 javascript export vue.js vue-component vuejs2

我有一个外部Java脚本文件 something.js

function myFun(){
  document.getElementById("demo").innerHTML="Hello World!";
  }

export default myFun;
Run Code Online (Sandbox Code Playgroud)

这是我的Vue组件 Dashboard.vue

<template>
    <div>
        <button type="button" name="button" @click="">Call External JS</button>
        <div id="demo"></div>
    </div>
</template>

<script>
import something from "./something.js"
export default {

created(){
}
}
</script>
Run Code Online (Sandbox Code Playgroud)

我有两个问题。

  1. 首先,我如何在创建的生命周期挂钩中调用此方法以自动运行。
  2. 其次,如何通过单击“调用外部JS”按钮来调用此方法

因为我知道更改div的内容很容易由vueJS完成,而无需纯JS外部文件的帮助。但是我在问这个问题,以阐明如何在vue组件中使用外部JS文件的概念。

谢谢。

kin*_*aro 13

  1. 您可以something在任何您想要的生命周期方法下调用导入的函数。在这里,我建议使用该mounted方法。一旦组件的所有 HTML 都已呈现,就会触发。

  2. 可以something在 vue 组件的方法下添加函数,然后直接从模板中调用该函数。

<template>
    <div>
        <button type="button" name="button" @click="something">
            Call External JS
        </button>
        <div id="demo"></div>
    </div>
</template>

<script>
import something from "./something.js"

export default {
    mounted() {
        something()
    },
    methods: {
        something,
    },
}
</script>
Run Code Online (Sandbox Code Playgroud)


Nar*_*rxx 8

更好的解决方案是使用mixins:

import something from './something.js'
export default {
  mixins: [something]
}
Run Code Online (Sandbox Code Playgroud)

现在你可以使用任何方法/计算机已在出口something.js上,直接this

因此,在您的示例中,您已从myFun()导出了内容something.js,我们可以这样称呼它Dashboard.vue

<template>
    <div>
        <button type="button" name="button" @click="myFun">Call External JS</button>
        <div id="demo"></div>
    </div>
</template>

<script>
    import something from "./something.js"
    export default {
        mixins: [something],
        mounted(){
            this.myFun()
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我希望语法正确,但这通常是mixin的想法。


小智 7

另一种方法是在数据块中添加方法:

import something from "./something.js" // assuming something is a function

data() {
  return {
    // some data...
    something,
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的模板中使用它,例如:

<template>
    <div class="btn btn-primary" @click="something">Do something</div>
</template>
Run Code Online (Sandbox Code Playgroud)