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>
    
  • 相关阅读:
    分享5款不同的多级导航切换DIV的jQuery特效
    CSS3+JS制作的一款图标任意拖动,并且可以放在文件夹中
    一款jQuery图片浏览插件可简单的设置7种切换效果
    基于HTML5和CSS的焦点图全屏切换的炫酷特效
    一款基于jQuery有趣的眼睛随鼠标进行有磁性的旋转
    jQuery+CSS3打造的3款不同的3D焦点图切换jQuery特效
    Maven Nexus仓库管理器
    Spring Basics
    补昨天的日志
    又一星期的星期一
  • 原文地址:https://www.cnblogs.com/jianjie/p/13546887.html
Copyright © 2011-2022 走看看