美文网首页
Vue之ref的使用

Vue之ref的使用

作者: 刘_小_二 | 来源:发表于2021-07-15 13:24 被阅读0次

    1.基本用法,本页获取Dom元素节点

    <template>
        <div>
        <div ref="refClass">元素内容</div>
        <button @click="handleTextDom">获取div节点</button>
      </div>
    </template>
    
    <script>
        export default {
        methods: {
          handleTextDom(){
            console.log(this.$refs.refClass);
          }
        }
      }
    </script>
    
    // 输出
    <div元素内容></div>
    

    ref除了可以获取本页面的dom元素,还可以拿到 子组件中 的data 和 去调用子组件中的方法.

    2.获取子组件的Data

    /// 子组件
    <template>
        <div>{{msg}}</div>
    </template>
    <script>
    export default {
      data(){
        return {
          msg: "我是子组件"
        }
      }
    }
    </script>
    
    /// 父组件
    <template>
        <div>
        <comment-Item ref="childData"></comment-Item>
        <button @click="handleTextDom">获取子组件data</button>
      </div>
    </template>
    <script>
    import commentItem from '../../components/comment_item.vue'
    export default {
      components:{
        commentItem
      },
      methods: {
        handleTextDom(){
          console.log(this.$refs.childData.msg);
        }
      }
    }
    </script>
    
    /// 输出
    我是子组件
    

    3.父组件调用子组件中的方法

    /// 子组件
    <template>
        <div></div>
    </template>
    
    <script>
        export default {
        methods: {
          open(){
            console.log('子组件 - 方法被调用~');
          }
        }
      }
    </script>
    
    /// 父组件
    <template>
        <comment-Item ref="childData"></comment-Item>
        <button @click="handleTextDom">获取子组件中的方法</button>
    </template>
    <script>
        import commentItem from '../../components/comment_item.vue'
      export default {
        components:{
          commentItem
        },
        methods:{
          handleTextDom(){
            // 调用子组件中的open()方法
            this.$refs.childData.open()
          }
        }
      }
    </script>
    
    /// 输出
    子组件 - 方法被调用~
    

    4.子组件调用父组件中的方法

    (操作逻辑:子组件触发一个自定义事件,然后父组件监听这个事件)

    /// 子组件
    <script>
        export default {
        methods: {
          open(){
            // 子组件调用父组件事件
            this.$emit("fatherClick")
          }
        }
      }
    </script>
    
    /// 父组件
    <template>
        <div>
        <comment-Item ref="childData" @fatherClick="handelClick"></comment-Item>
        <button @click="handleTextDom">获取子组件中的方法</button>
      </div>
    </template>
    
    <script>
    import commentItem from '../../compoents/comment_item.vue'
      export default {
        components : {
          commentItem
        },
        methods: {
          handleTextDom(){
            this.$refs.childData.open()
          },
          handleClick(){
            console.log('我是父组件方法')
          }
        }
      }
    </script>
    

    子组件的方法, 触发了一个自定义事件, 这个自定义事件 触发了 父组件中的方法。

    /// 输出
    我是父组件方法
    

    相关文章

      网友评论

          本文标题:Vue之ref的使用

          本文链接:https://www.haomeiwen.com/subject/bwwppltx.html