首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue组件中外部导入方法的VueJS访问

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

Stack Overflow用户
提问于 2018-03-07 05:45:10
回答 7查看 34.1K关注 0票数 22

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

代码语言:javascript
复制
function myFun(){
  document.getElementById("demo").innerHTML="Hello World!";
  }

export default myFun;

这是我的vue组件Dashboard.vue

代码语言:javascript
复制
<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>

我有两个问题。

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

因为我知道,如果没有纯JS外部文件的帮助,vueJS就可以轻松地更改div的内容。但我问这个问题是为了澄清如何在vue组件中使用外部JS文件的概念。

谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-03-07 05:55:41

  1. 您可以在任何生命周期方法下调用导入的something函数。在这里,我建议使用mounted方法。一旦所有组件的HTML呈现完毕,就会触发。
  2. 您可以在vue组件的方法下添加something函数,然后直接从模板调用该函数。
代码语言:javascript
复制
<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>
票数 20
EN

Stack Overflow用户

发布于 2018-12-10 12:13:44

一个更好的解决方案是使用混合器:

代码语言:javascript
复制
import something from './something.js'
export default {
  mixins: [something]
}

现在,您可以直接在something.js上使用在this中导出的任何方法/计算方法。

因此,在您的示例中,您可以从myFun()导出something.js,我们可以从Dashboard.vue调用它,如下所示:

代码语言:javascript
复制
<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>

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

票数 23
EN

Stack Overflow用户

发布于 2019-03-20 12:11:09

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

代码语言:javascript
复制
import something from "./something.js" // assuming something is a function

data() {
  return {
    // some data...
    something,
  }
}

然后在模板中使用它,如下所示:

代码语言:javascript
复制
<template>
    <div class="btn btn-primary" @click="something">Do something</div>
</template>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49144933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档