vue中父级访问子级与子级访问父级

vue中父级访问子级与子级访问父级

父级访问子级

通过$children与refs访问
<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport"
    content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="../helloVue/js/vue.js"></script>
</head>

<body>
  <div id="app">
    <cpn></cpn>
    <cpn ref="abc"></cpn>
    <cpn></cpn>
    <button @click="btnClick">按钮</button>
  </div>
  
  <template id="cpn">
    <div>
      <h2>{{message}}</h2>
    </div>
  </template>
  
  <script>
    var cpn = {
      template: '#cpn',
      data() {
        return {
          message:'我是子组件'
        }
      }
    }

    var app = new Vue({
      el: '#app',
      data: {},
      methods: {
        btnClick(){
          // console.log(this.$children[0].message)
          //ref 类似于id, refs为所有的ref
          console.log(this.$refs.abc.message)     
        }
      },
      components: {
        cpn
      }
    })
  </script>
</body>
</html>

子级访问父级

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
    content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="../helloVue/js/vue.js"></script>
</head>
<body>
  <div id="app">
    <cpn></cpn>
  </div>
  
  <template id="cpn">
    <div>
      <ccpn></ccpn>
    </div>
  </template>

  <template id="ccpn">
    <div>
      <h2>{{message}}</h2>
      <button @click="btnClick">按钮</button>
    </div>
  </template>
  <script>
    var cpn = {
      template: '#cpn',
      data() {
        return {
          message: '我是子组件'
        }
      },methods: {},
      components: {
        ccpn:{          
              template: '#ccpn',
                data() {
                return {
                  message: '我是子子组件'
                }
              }, methods: {
                btnClick() {
                  console.log(this.$parent)
                  console.log(this.$root)
                }
              } 
        }
      }
    }

    var app = new Vue({
      el: '#app',
      data: {},
      methods: {},
      components: {
        cpn
      }
    })
  </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值