微信扫一扫打赏支持

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>

 

 

 
posted @ 2021-01-07 10:21  范仁义  阅读(376)  评论(0编辑  收藏  举报