zoukankan      html  css  js  c++  java
  • 【vue】父子组件间通信----传函数

    (一)子组件 调用 父组件 方法

       方式一)

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

    父组件

    <template>
      <div>
        <child></child>
      </div>
    </template>
    <script>
      import child from '~/components/child';
      export default {
        components: {
          child
        },
        methods: {
          fatherMethod() {
            console.log('父组件方法');
          }
        }
      };
    </script>
    View Code

    子组件

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

       方式二)

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

      父组件

    <template>
      <div>
        <child @fatherMethod="fatherMethod"></child>
      </div>
    </template>
    <script>
      import child from '~/components/child';
      export default {
        components: {
          child
        },
        methods: {
          fatherMethod() {
            console.log('父组件方法');
          }
        }
      };
    </script>
    View Code

     子组件

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

       方式三)

       父组件把方法传入子组件中,在子组件里直接调用该方法

     父组件

    <template>
      <div>
        <child :fatherMethod="fatherMethod"></child>
      </div>
    </template>
    <script>
      import child from '~/components/dam/child';
      export default {
        components: {
          child
        },
        methods: {
          fatherMethod() {
            console.log('父组件方法');
          }
        }
      };
    </script>
    View Code

     子组件

    <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>
    View Code

    (二)父组件 调用  子组件 方法

     方式一)

    在子组件中加上ref,然后通过this.$refs.ref.method调用

    父组件

    <template>
      <div @click="fatherMethod">
        <child ref="child"></child>
      </div>
    </template>
    <script>
      import child from '~/components/child.vue';
      export default {
        components: {
          child
        },
        methods: {
          fatherMethod() {this.$refs.child.childMethods();
          }
        }
      };
    </script>
    View Code

    子组件

    <template>
      <div>{{test}}</div>
    </template>
    <script>
      export default {
        data() {
          return {
            test: '数据'
          };
        },
        methods: {
          childMethods() {
            console.log("子组件方法");
          }
        }
      };
    </script>
    View Code
  • 相关阅读:
    我的Android平台“人人相册”客户端
    ADT 17及更高版本的混淆变更
    由glBitmap想到OpenGL编程涉及的坐标系
    版本控制之SVN
    工作了,要努力
    50 Most Frequently Used UNIX / Linux Commands (With Examples)
    linux命令分析SED (二)
    SeekBar也玩分段
    TSQL RAND()
    使用WebClient进行上传文件 [ZT]
  • 原文地址:https://www.cnblogs.com/smilexumu/p/7890297.html
Copyright © 2011-2022 走看看