javascript - Vue.js 向组件添加函数

标签 javascript vue.js vuejs2 vue-component

我正在使用 Vue.js,我想向我的组件 Map.vue 添加一个函数,因此当我单击按钮时,它会调用在同一文件中声明的函数:

<template>
  <div>
    <div class="google-map" :id="mapName">
    </div>
    <button >Do stuff</button>  
  </div>
</template>

我只看到了在 App.vue 中声明函数时的示例。如何在我的 Map.vue 文件中执行此操作?

最佳答案

事件

App.vueMap.vue 都是组件,因此它们在“同一文件”( single file components ) 中调用函数(方法)时工作方式相同。

触发event添加 v-on:click="yourFunctionHere()",然后确保在脚本部分的 methods 对象中声明您的函数:

Map.vue

<template>
  <div>
    <div class="google-map" :id="mapName">
    </div>
    <button v-on:click="doStuff()">Do stuff</button>  
  </div>
</template>

<script>
  export default {
    methods: {
      doStuff () {
        alert('Did something!')
      }
    }
  }
</script>

自定义事件

由于不太清楚子组件 Map.vue 是什么让您感到困惑(因为您了解父组件 App.vue),也许您在问如何调用来自子 Map.vue 中的按钮的 App.vue 中的函数?

如果是这种情况,那么您需要使用custom events child 与家长的沟通:

Map.vue

<template>
  <div>
    <div class="google-map" :id="mapName">
    </div>
    <button v-on:click="doStuff()">Do stuff</button>  
  </div>
</template>

<script>
  export default {
    methods: {
      doStuff () {
        this.$emit('childStuff', 'some value from child')
      }
    }
  }
</script>

App.vue

<template>
  <div>
    <Map v-on:childStuff="value => { parentStuff(value) }"></Map>
  </div>
</template>

<script>
  import Map from './components/Map'

  export default {
    components: {
      Map
    },

    methods: {
      parentStuff (value) {
        alert(value)
      }
    }
  }
</script>

关于javascript - Vue.js 向组件添加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305891/

相关文章:

javascript - Yeoman - 如何将快速服务器任务添加到由生成器 Angular 生成的 Gruntfile.js

javascript - jQuery UI resizable 在调整宽度时改变高度

javascript - 如何在目录模式下更改 babel-cli 输出的文件名?

vue.js - 我可以在使用 vue.js 时在内联 svg 中使用 &lt;style&gt; 吗?

vue.js - vue-router 是否与内联模板一起使用?

javascript - Vue : Input Form in a component doesn't return a value

javascript - 访问 SEMrush api 响应数据

vue.js - 将构建时间戳注入(inject) vue-cli 构建输出文件以验证使用 yarn 的部署

javascript - 处理 VueJS 范围

vuejs2 - 在 bootstrap-vue 表上显示详细信息的问题