• vue子组件向父组件传递数据


    vue子组件向父组件传递数据

    一、总结

    一句话总结:

    a、【子组件发射自定义事件】:子组件中方法:btnClick(item) {this.$emit('item-click', item)}
    b、组件使用中【绑定该事件】:【<cpn @item-click="cpnClick"></cpn>】:item-click是【子组件】中发射的方法名称,cpnClick是【父组件】中接收的方法名称
    c、父组件【接收事件】:cpnClick(item) {console.log('cpnClick', item);}

    1、父子组件传递数据方式?

    父组件向子组件传递数据用【props】
    子组件向父组件传递数据用【发射$emit自定义事件】

    二、vue子组件向父组件传递数据

    1、截图

    2、代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <!--父组件模板-->
    <div id="app">
      <cpn @item-click="cpnClick"></cpn>
    </div>
    
    <!--子组件模板-->
    <template id="cpn">
      <div>
        <button v-for="item in categories"
                @click="btnClick(item)">
          {{item.name}}
        </button>
      </div>
    </template>
    
    <script src="../js/vue.js"></script>
    <script>
    
      // 1.子组件
      const cpn = {
        template: '#cpn',
        data() {
          return {
            categories: [
              {id: 'aaa', name: '热门推荐'},
              {id: 'bbb', name: '手机数码'},
              {id: 'ccc', name: '家用家电'},
              {id: 'ddd', name: '电脑办公'},
            ]
          }
        },
        methods: {
          btnClick(item) {
            // 发射事件: 自定义事件
            this.$emit('item-click', item)
          }
        }
      }
    
      // 2.父组件
      const app = new Vue({
        el: '#app',
        data: {
          message: '你好啊'
        },
        components: {
          cpn
        },
        methods: {
          cpnClick(item) {
            console.log('cpnClick', item);
          }
        }
      })
    </script>
    
    </body>
    </html>
     
  • 相关阅读:
    JAVA多线程大总结篇
    JAVA多线程总结01
    Eclipse配置Tomcat
    jdbc注册驱动出现Loading class `com.mysql.jdbc.Driver'. This is deprecated的问题:
    windows10环境下eclipse连接mysql
    mysql忘记密码,如何修改
    c++笔记:虚函数必要但易忘的一些性质
    Mysql 4 —— select 进阶
    Mysql 3 —— 建表
    数据结构实验一:单链表就地翻转
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/14244907.html
Copyright © 2020-2023  润新知