父子组件传值

2020-04-09  本文已影响0人  猫晓封浪
  <div id="app">
    <!-- 父组件通过绑定属性 count 向子组件传值 -->
    <counter :count="1" @watch="addCounts"></counter>
    <counter :count="2" @watch="addCounts"></counter>
    <div>{{total}}</div>
  </div>
  <script>
    var counter = {
      props: ["count"], // 子组件通过 props 接收父组件的传值
      data: function(){ // 子组件中 data 必须是一个方法,不能是对象
        return {
          num: this.count // 通过克隆的方式修改父组件传值,即不直接修改父组件值(单向数据流)
        }
      },
      template: "<div @click='add'>{{num}}</div>",
      methods: {
        add: function(){
          this.num = this.num + 2
          this.$emit("watch", 2) // 子组件通过 this.$emit() 触发父组件事件,第二个参数为所携带值
        }
      }
    }
    var vm = new Vue({
      el: "#app",
      data: {
        total: 3
      },
      components: {
        counter: counter
      },
      methods: {
        addCounts: function(value){
// 此时 value 就是子组件通过 this.$emit() 传过来的第二个参数
          this.total = this.total + 2
        }
      },
    })
  </script>
上一篇 下一篇

猜你喜欢

热点阅读