04-Vue:ref获取页面节点--很简单

前言

我们接着上一篇文章 03-02-Vue组件之间的传值 来讲。


下一篇文章 05-Vue路由

在Vue中,通过 ref 属性获取DOM元素

我们当然可以使用JS原生的做法(document.getElementById)或者 jQuery 来获取DOM,但是这种做法却在无形中操作了DOM,在Vue框架中并不推荐这种做法。

我们可以通过ref属性获取DOM元素。

ref的英文单词是reference,表示引用。我们平时可以经常看到控制台会报错referenceError的错误,就和引用类型的数据有关。

在Vue中,通过 ref 属性获取DOM元素的步骤:

(1)第一步:在标签中给 DOM 元素设置 ref 属性。

    <h3 id="myH3" ref="myTitle"> 今天天气太好了</h3>

(2)第二步:通过 this.$refs.xxx 获取 DOM 元素

console.log(this.$refs.myTitle.innerText)

举例如下

<template>
  <div id="app">
    <!-- 第一步:在标签中给 DOM 元素设置 ref 属性 -->
    <h3 id="myH3" ref="myTitle"> 今天天气太好了</h3>
    <button @click="getRefs">获取页面节点</button>
  </div>
</template>

<script>

export default {
  methods: {
    getRefs(){
      // 第二步:通过 this.this.$refs.xxx 获取 DOM 元素
      console.log(this.$refs.myTitle.innerText);
    }
  },
};
</script>

运行上方代码,然后我们在控制台输入vm,就可以看到:

7

使用 ref 属性获取整个子组件(父组件调用子组件的方法)

根据上面的例子,我们可以得出规律:只要ref属性加在了DOM元素身上,我们就可以获取这个DOM元素。

那我们可以通过ref属性获取整个Vue子组件吗?当然可以。这样做的意义是:在父组件中通过ref属性拿到了子组件之后,就可以进一步拿到子组件中的data和method

父组件代码:

<template>
  <div id="app">
    <!-- 第一步:在标签中给 DOM 元素设置 ref 属性 -->
    <MyComponent ref="MyComponentRef"></MyComponent>
    <button @click="getRefs">获取页面节点</button>
  </div>
</template>

<script>
import MyComponent from './components/MyComponent.vue';

export default {
  components: {
    MyComponent
  },
  data() {
    return {

    };
  },
  methods: {
    getRefs(){
      // 第二步:通过 this.this.$refs.xxx 获取 DOM 元素
      this.$refs.MyComponentRef.handleClick()
    }
  },
};
</script>

子组件代码

<template>
    <div @click="handleClick">这是组件中的内容</div>
</template>

    <script>
export default {
    data(){
        return{
            childData: { //定义自组件的数据
                name: 'HydeLinjr',
                age: 26
            }
        }
    },
    methods: {
        handleClick() {
            // 子组件如果要给父组件传递参数,在触发 emit 的时候,通过参数的形式带出去就可以了
            // 【第一步】在子组件里,我们带两个参数出去,传给父组件
            console.log(this.childData);
        },
    },
};
</script>

    <style>
</style>

运行代码,点击按钮后,效果如下:

8

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程的一拳超人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值