zoukankan      html  css  js  c++  java
  • 391 vue $refs:vue获取组件、DOM元素

    十五、获取组件(获取DOM元素) - refs

    • 说明 : vm.$refs 一个对象, 持有已注册过 ref 的所有子组件 ( HTML 元素)

    ref如果是绑定在组件中的, 那么通过this.$refs.refname获取到的是一个组件对象.
    ref如果是绑定在普通的元素中, 那么通过this.$refs.refname获取到的是一个元素对象.


    • 使用 :

      1. 注册
      // $refs = {  div : div元素, child:child组件 }
      // 标签 
      <div ref="div">哈哈</div>
      // 组件 
      <child ref="child"></child>
      
      1. 注意 : mounted 中使用
      // mounted 操作DOM
      * this.$refs.div
      * this.$refs.child
      
    • 注意点 : 如果获取的是一个子组件,那么通过 ref 就能获取到子组件中的 datamethods

      this.$refs.child.num
      this.$refs.child.fn
      
    • 场景 : 一般在第三方的组件中, 可能会用到这个功能

    • 示例 :

    // 组件
     <div ref="div">哈哈</div>
     <child ref="child"></child>
    // js
    mounted() {
        console.log(this.$refs.div)
        console.log(this.$refs.child.fn)
    }
    

    04-refs.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8" />
      <title>Document</title>
    </head>
    
    <body>
      <!-- 
        以后在一些第三方框架里, 获取dom元素/获取组件,可以用 refs 
        1. refs: 对象格式 (键值对) 收集了一些 注册过 ref 的元素/组件
        2. 凡是注册过 ref 的元素或者组件都会被refs收录
        3. 通过 this.$refs  
    
        总结 : 
        1. refs 可以获取 dom元素/组件
        2. 怎么获取 
          - 注册: ref='c' 【给一个唯一的属性值,类似于id。】
          - 获取: this.$refs 
      -->
    
      <div id="app">
        <!-- 
          refs
          {
            d : <div ref='d'>我是div</div>   
            p : <p ref='p'>我是p标签</p>
          }
        -->
    
        <div ref="d">我是div</div>
        <p ref="p">我是p标签</p>
        <child ref="c"></child>
      </div>
    
      <script src="./vue.js"></script>
      <script>
        // 组件 看做是一个个可复用的ui模块
        // 组件的本质: vue 实例
        Vue.component('child', {
          template: `<div> 子组件 :  </div>`,
          data() {
            return {
              cmsg: '子组件里的数据'
            }
          }
        })
    
        const vm = new Vue({
          el: '#app',
          data: {},
          created() { },
          mounted() {
            console.log(this.$refs) // {d: div, p: p, c: VueComponent}
    
            // 可以通过 this.$refs 获取dom元素/组件
            console.log(this.$refs.d) // <div>我是div</div>
            console.log(this.$refs.d.innerHTML) // 我是div
    
            // 也可以获取组件里的数据
            // 父组件可以通过 refs 拿到子组件里的数据
            console.log(this.$refs.c)
            console.log(this.$refs.c.cmsg) // 子组件里的数据
          }
        })
      </script>
    </body>
    
    </html>
    
    
  • 相关阅读:
    uva-10160-枚举
    zk-systemd
    c++官方文档-枚举-联合体-结构体-typedef-using
    c++官方文档-动态内存
    c++官方文档-指针
    c++官方文档-命名空间
    c++官方文档-模版函数和重载
    c++官方文档-按值传递和按引用传递
    c++官方文档
    HDU 1068
  • 原文地址:https://www.cnblogs.com/jianjie/p/12529496.html
Copyright © 2011-2022 走看看