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

Vue中子组件调用父组件的方法,这里有三种方法提供参考

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

父组件

  1.  
    <template>
  2.  
    <div>
  3.  
    <child></child>
  4.  
    </div>
  5.  
    </template>
  6.  
    <script>
  7.  
    import child from '~/components/dam/child';
  8.  
    export default {
  9.  
    components: {
  10.  
    child
  11.  
    },
  12.  
    methods: {
  13.  
    fatherMethod() {
  14.  
    console.log('测试');
  15.  
    }
  16.  
    }
  17.  
    };
  18.  
    </script>

子组件

  1.  
    <template>
  2.  
    <div>
  3.  
    <button @click="childMethod()">点击</button>
  4.  
    </div>
  5.  
    </template>
  6.  
    <script>
  7.  
    export default {
  8.  
    methods: {
  9.  
    childMethod() {
  10.  
    this.$parent.fatherMethod();
  11.  
    }
  12.  
    }
  13.  
    };
  14.  
    </script>

第二种方法是在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了。

父组件
 

  1.  
    <template>
  2.  
    <div>
  3.  
    <child @fatherMethod="fatherMethod"></child>
  4.  
    </div>
  5.  
    </template>
  6.  
    <script>
  7.  
    import child from '~/components/dam/child';
  8.  
    export default {
  9.  
    components: {
  10.  
    child
  11.  
    },
  12.  
    methods: {
  13.  
    fatherMethod() {
  14.  
    console.log('测试');
  15.  
    }
  16.  
    }
  17.  
    };
  18.  
    </script>

子组件

  1.  
    <template>
  2.  
    <div>
  3.  
    <button @click="childMethod()">点击</button>
  4.  
    </div>
  5.  
    </template>
  6.  
    <script>
  7.  
    export default {
  8.  
    methods: {
  9.  
    childMethod() {
  10.  
    this.$emit('fatherMethod');
  11.  
    }
  12.  
    }
  13.  
    };
  14.  
    </script>

第三种是父组件把方法传入子组件中,在子组件里直接调用这个方法

父组件

  1.  
    <template>
  2.  
    <div>
  3.  
    <child :fatherMethod="fatherMethod"></child>
  4.  
    </div>
  5.  
    </template>
  6.  
    <script>
  7.  
    import child from '~/components/dam/child';
  8.  
    export default {
  9.  
    components: {
  10.  
    child
  11.  
    },
  12.  
    methods: {
  13.  
    fatherMethod() {
  14.  
    console.log('测试');
  15.  
    }
  16.  
    }
  17.  
    };
  18.  
    </script>

子组件
 

    1.  
      <template>
    2.  
      <div>
    3.  
      <button @click="childMethod()">点击</button>
    4.  
      </div>
    5.  
      </template>
    6.  
      <script>
    7.  
      export default {
    8.  
      props: {
    9.  
      fatherMethod: {
    10.  
      type: Function,
    11.  
      default: null
    12.  
      }
    13.  
      },
    14.  
      methods: {
    15.  
      childMethod() {
    16.  
      if (this.fatherMethod) {
    17.  
      this.fatherMethod();
    18.  
      }
    19.  
      }
    20.  
      }
    21.  
      };
    22.  
      </script>

 

 

转:https://blog.csdn.net/zgrkaka/article/details/100528714

posted @   炽橙子  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示