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


    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>
  • 相关阅读:
    【作业7】完成调查问卷
    用博客园第一周
    讲座观后感
    调查问卷
    第十一周·前端学习笔记--正则表达式
    调查问卷
    思维导图
    讲座心得1
    第一次作业(8.学习进度表)
    第一次作业(7.问卷调查)
  • 原文地址:https://www.cnblogs.com/totoro-cat/p/13049777.html
Copyright © 2020-2023  润新知