zoukankan      html  css  js  c++  java
  • 522 vue父子组件的访问方式: $children、$refs、$parent

    父子组件的访问方式: $children、$refs

    父子组件的访问方式: $children


    父子组件的访问方式: $refs


    组件访问-父访问子-children-refs.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    
    <body>
    
      <div id="app">
        <cpn></cpn>
        <cpn></cpn>
    
        <my-cpn></my-cpn>
        <y-cpn></y-cpn>
    
        <cpn ref="aaa"></cpn>
        <button @click="btnClick">按钮</button>
      </div>
    
      <template id="cpn">
        <div>我是子组件</div>
      </template>
      <script src="../js/vue.js"></script>
      <script>
        const app = new Vue({
          el: '#app',
          data: {
            message: '你好啊'
          },
          methods: {
            btnClick() {
              // 1.$children
              // console.log(this.$children);
              // for (let c of this.$children) {
              //   console.log(c.name);
              //   c.showMessage();
              // }
              // console.log(this.$children[3].name);
    
              // 2.$refs => 对象类型, 默认是一个空的对象,ref='bbb' 【以对象结构保存所有子组件】
              console.log(this.$refs.aaa.name);
            }
          },
          components: {
            cpn: {
              template: '#cpn',
              data() {
                return {
                  name: '我是子组件的name'
                }
              },
              methods: {
                showMessage() {
                  console.log('showMessage');
                }
              }
            },
          }
        })
      </script>
    
    </body>
    
    </html>
    

    父子组件的访问方式: $parent

    组件访问-子访问父-parent-root

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    
    <body>
    
      <div id="app">
        <cpn></cpn>
      </div>
    
      <template id="cpn">
        <div>
          <h2>我是cpn组件</h2>
          <ccpn></ccpn>
        </div>
      </template>
    
      <template id="ccpn">
        <div>
          <h2>我是子组件</h2>
          <button @click="btnClick">按钮</button>
        </div>
      </template>
    
      <script src="../js/vue.js"></script>
      <script>
        const app = new Vue({
          el: '#app',
          data: {
            message: '你好啊'
          },
          components: {
            cpn: {
              template: '#cpn',
              data() {
                return {
                  name: '我是cpn组件的name'
                }
              },
              components: {
                ccpn: {
                  template: '#ccpn',
                  methods: {
                    btnClick() {
                      // 1.访问父组件$parent
                      // console.log(this.$parent);
                      // console.log(this.$parent.name);
    
                      // 2.访问根组件$root
                      console.log(this.$root);
                      console.log(this.$root.message);
                    }
                  }
                }
              }
            }
          }
        })
      </script>
    
    </body>
    
    </html>
    
  • 相关阅读:
    ZOJ3861 Valid Pattern Lock
    ZOJ 3866 Cylinder Candy
    hdu 1729 Stone Game SG函数
    hdu 2546 饭卡 01背包
    hdu 2084 数塔
    中国科学院大学生创新实践训练计划-
    中国科技论文在线期刊模板出现了格式问题,怎么解决?
    1015. 德才论 (25)
    1014. 福尔摩斯的约会 (20)
    Ubuntu 14.0的安装及联网
  • 原文地址:https://www.cnblogs.com/jianjie/p/13546887.html
Copyright © 2011-2022 走看看