• vue 子调父this.$parent this.$emit区别


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

    父组件

    vue 里 this.$parent 作用
    $parent在子组件中调用父组件的方法或获得其数据
    this.$parent 可以访问到父组件上所有的 data(){ 里的数据信息和生命周期方法,methods里的方法 }this.$parent.List = []; 表示访问到父组件中data的数据list数组
    
    区分
    1、ref为子组件指定一个索引名称,通过索引来操作子组件;
    2、this.$parent 可以直接访问该组件的父实例或组件;
    3、父组件也可以通过this.$children 访问它所有的子组件,
    $parent和$children 可以递归向上或向下无线访问, 直到根实例或最内层的组件。
    <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向父组件触发一个事件,父组件监听这个事件就行了。(传参)

    父组件

    作用
    子组件可以使用 $emit 触发父组件的自定义事件。
    语法
    vm.$emit( event, arg ) //触发父级实例上的事件
    对于vue.js中的this.emit的理解:
    举例 : this.emit(‘increment1’,”加参数”);
    其实它的作用就是触发自定义函数。此外,可以子组件传参数给父组件
    综述,即子组件调用父组件的方法并传递数据
    具体应用如下
    <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>
  • 相关阅读:
    吾爱破解 培训第十课:探寻逆向新航标x64平台脱壳与破解实战 笔记
    吾爱破解 培训第八、九课:短兵相接深入浅出探讨脱壳细节 笔记
    十大经典排序算法(转自 www.runoob.com)
    吾爱破解 培训第一课:破解基础知识之介绍常见工具和壳的特征 笔记
    吾爱破解 培训第三课:改头换面之修改版权和资源 笔记
    吾爱破解 软件虚拟机保护分析资料整理 笔记
    吾爱破解 新手脱壳破解常见问题 笔记
    吾爱破解 培训第七课:手把手教你从实例看如何攻破常见的网络验证 笔记
    吾爱破解 培训第五课:反击作者的挑衅实战解除程序重启验证 笔记
    GDB基础
  • 原文地址:https://www.cnblogs.com/huoshengmiao/p/15236673.html
Copyright © 2020-2023  润新知