Vue子组件调用父组件的方法函数

阅读数:62 评论数:0

跳转到新版页面

分类

html/css/js

正文

方法一

直接在子组件中通过this.$parent.event来调用父组件的方法。

父组件

<template>
  <div>
    <child></child>
  </div>
</template>
<script>
  import child from './components/dam/child';
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {
        console.log('测试');
      }
    }
  };
</script>

子组件

<template>
  <div>
    <button @click="childMethod()">点击</button>
  </div>
</template>
<script>
  export default {
    methods: {
      childMethod() {
        this.$parent.fatherMethod();
      }
    }
  };
</script>

方法二

在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了。

父组件

<template>
  <div>
    <child @fatherMethod="fatherMethod"></child>
  </div>
</template>
<script>
  import child from '~/components/dam/child';
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {
        console.log('测试');
      }
    }
  };
</script>

子组件

<template>
  <div>
    <button @click="childMethod()">点击</button>
  </div>
</template>
<script>
  export default {
    methods: {
      childMethod() {
        this.$emit('fatherMethod');
      }
    }
  };
</script>

方法三

父组件把方法传入子组件,在子组件里直接调用这个方法。

子组件

<template>
  <div>
    <button @click="childMethod()">点击</button>
  </div>
</template>
<script>
  export default {
    props: {
      fatherMethod: {
        type: Function,
        default: null
      }
    },
    methods: {
      childMethod() {
        if (this.fatherMethod) {
          this.fatherMethod();
        }
      }
    }
  };
</script>




相关推荐

1、安装依赖 npm install svg-sprite-loader --save-dev 2、配置build文件夹中的webpack.base.conf.js 3、在src/component

在列表渲染时使用key属性 当Vue.js用v-for正在更新已渲染过的元素列表时,它默认用&ldquo;就地复用&rdquo;策略,如果数据项的顺序被改变,Vue将不会移动D

一、vue.js devtools开发工具的使用 1、安装 在chrome或firefox浏览器的扩展插件仓库里搜索vue devtool。 2、debugger的使用 假设我们想调试App.vue这

在一些情况下,我们可能会需要对一个prop进行双向绑定,但它破坏了单向数据流。 在vue 2.3.0,重新引入了.sync修饰符,这是一个语法糖。 例子: <

&lt;div id="app"&gt; &lt;div v-on:click="dodo"&gt;

在登陆页的mouted生命周期方法中,添加 <pre class

ref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象上。如果在普通的DOM元素上使用,引用指向的就是DOM元素,如果用在子组件上,引用就指向组件实例。 <!-- `vm.$

在使用Vue中经常看到HTML中有标签属性前面添加了“:”,有些没有。 其实是v-bind的缩写。 v-bind 缩写: ‘:’ 用法:动态绑定一个或多个特性,或一个组件prop到表达式。在绑定cl

module.exports = { "plugins": { "postcss-import": {},

一、概述 Vuex是一个专门为Vue.js应用程序开发的全局状态管理功能。它采用集中式存储管理应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化。 每一个Vuex应用的核心就是s