首页 > 其他 > 详细

【VUE】7.组件通信(二)子组件修改父组件

时间:2020-06-05 16:09:05      阅读:43      评论:0      收藏:0      [点我收藏+]

1. 前提&知识点

  1./components/Father.vue 是父组件, Son.vue 是子组件

  2.子组件修改父组件

    emit

 

2. 组件通信

  1. 首先对子组件绑定一个事件 changeFatherTitle,用来修改父组件的标题

<li v-for="item in father_list" :key=‘item‘ @click="changeFatherTitle">{{item}}</li>

  2. 添加changeFatherTitle方法

 methods: {
    changeFatherTitle (ev) {
      console.log(this)
    }
  }

  3. 添加自定义事件$emit 接收两个参数:第一个参数,自定义名称,第二个参数,自定义内容

methods: {
    changeFatherTitle (ev) {
      console.log(this)
      this.$emit(‘changeFatherTitle‘, ev.target.innerHTML)
    }
  }

  4. 子组件已经触发了changeFatherTitle事件,父组件接收 father.vue ,在子组件标签上绑定changeFatherTitle事件

<son :father_list="father_list" @changeFatherTitle="changeTitle"></son>

  5. 添加 changeTitle方法, 通过子组件获取的数据,每次点击修改父组件的title

 methods: {
    changeTitle(str) {
      this.title = str;
    }
  }

  6. 效果

技术分享图片

 

3. 完整代码

Father.vue

<template>
  <div>
    <h2>{{title}}</h2>
    <son :father_list="father_list" @changeFatherTitle="changeTitle"></son>
  </div>
</template>
<script>
import Son from "./Son.vue";
export default {
  name: "Father",
  data() {
    return {
      title: "father",
      father_list: ["第一章", "第二章", "第三章", "第四章"]
    };
  },
  methods: {
    changeTitle(str) {
      this.title = str;
    }
  },
  components: {
    son: Son
  }
};
</script>

Son.vue

<template>
  <div>
    <ul>
      <li v-for="item in father_list" :key=‘item‘ @click="changeFatherTitle">{{item}}</li>
    </ul>
  </div>
</template>
<script>
export default {
  data () {
    name: ‘Son‘
    return {
     // list: [‘第一章‘, ‘第二章‘, ‘第三章‘, ‘第四章‘]
    }
  },
  methods: {
    changeFatherTitle (ev) {
      console.log(this)
      this.$emit(‘changeFatherTitle‘, ev.target.innerHTML)
    }
  },
  props: [‘father_list‘]
}
</script>

【VUE】7.组件通信(二)子组件修改父组件

原文:https://www.cnblogs.com/totoro-cat/p/13049777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!