开发者社区> 问答> 正文

vue 中子组件调用父组件的方法

vue 中子组件调用父组件的方法

展开
收起
问问小秘 2019-11-22 15:40:35 1166 0
1 条回答
写回答
取消 提交回答
  • 第一种方法是直接在子组件中通过 this.$parent.event 来调用父组件的方法 第二种方法是在子组件里用$emit 向父组件触发一个事件,父组件监听这个事件就行了 第三种是父组件把方法传入子组件中,在子组件里直接调用这个方法 解析:

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

    父组件

    
    子组件
    
    ```js
    <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>
        <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 {
        props: {
          fatherMethod: {
            type: Function,
            default: null
          }
        },
        methods: {
          childMethod() {
            if (this.fatherMethod) {
              this.fatherMethod();
            }
          }
        }
      };
    </script>
    
    2019-11-22 15:44:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
Vue.js在前端服务化上的实践与探索 立即下载
利用编译将 Vue 组件转成 React 组件 立即下载