javascript - 从父组件执行子(组件)函数

标签 javascript vue.js vuejs2

为了避免这种情况变得困惑,并使用“原生”jQuery/javascript,我想从父组件中调用子组件中的函数,我想要执行的函数是 change_map_data()来自子 G_Map.vue 以一种优雅的方式,vueish 方式:

Parent.vue

<template>
<div class="col-md-12">
    ...
    <i v-on:click="change_map_data">change markers</i>
    ...
    <g-map v-bind:map_data="init_data.map"></g-map>
    ...
</div>
export default {
    data() {
        return {
            init_data: {
                map: {
                    map_ele: 'map'
                }
            }
        }
    }
}
</script>
</template>

G_Map.vue:

<template>
    <div :id="map_data.map_ele" class="gmap"></div>
</template>

<script>

import init_map from '../../../assets/js/map.js';

export default {

    props: ['map_data'],
    methods: {
        change_map_data: function() { // want to execute this from parent
            alert();
        }
    }
}
</script>

最佳答案

如果您想从父组件调用子组件上定义的方法,则必须获取子组件的引用并直接调用其方法:

<i v-on:click="$refs.map.change_map_data()">change markers</i>
<g-map v-bind:map_data="init_data.map" ref="map"></g-map>

如果您要生成动态数量的 map ,那么您需要执行以下操作:

<div v-for="map, i of maps">
  <i v-on:click="$refs.map[i].change_map_data()">change markers</i>
  <g-map v-bind:map_data="map" ref="map"></g-map>
</div>

关于javascript - 从父组件执行子(组件)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847568/

相关文章:

javascript - 使用分页每页显示五个帖子不起作用

javascript - 每当在 Vue.js 中更改任何变量时触发监视函数

laravel - 找不到模块 : Error: Can't resolve 'timers'

javascript - Vue.js 如何在实例上定义方法

javascript - 在vue js中动态导入文件

javascript - 有没有办法根据用户角色为一条路线加载不同的 View ?

javascript - 组件未重新加载但状态随 useState 发生变化

javascript - React - 将函数传递给子组件什么都不做

javascript - Express JS 4.0,提供二进制数据,请求 Accept header 更改输出

javascript - 如何从 .vue 文件中导出多个对象