vue中ref的使用

今天看了别人写的代码,有些地方不太理解,查阅资料之后真的是受益匪浅,在这里分享给大家。
<template>
  <div>
    <!-- vue中的ref功能很强大,介绍一下如何使用的。基本用法:本页面获取dom元素。 -->
    <div id="app">
      <div ref="testDom">111</div>
      <button @click="getTest">获取test节点</button>
    </div>
  </div>
</template>

<script>
export default {
    methods:{
      getTest(){
        console.log(this.$refs.testDom);
      }
    }
}
</script>

<style>

</style>


ref除了可以获取本页面的dom元素,还可以拿到子组件中的data和去调用子组件中的方法。
通过ref。父组件里面只要设置过ref的组件,都可以通过this.$refs[childeName]拿到子组件。
如果有两个子组件同时都叫 ref="abc"。那么 this.$refs.abc就是数组。如果只有一个,就是直接是那个子组件。

<template>
  <div>
    <!-- ref除了可以获取本页面的dom元素,还可以拿到子组件中的data和去调用子组件中的方法。 -->
    <div id="app">
      <HelloWorld ref="hello"/>
      <button @click="getHello">获取helloworld组件中的值</button>
    </div>
  </div>
</template>

<script>
// 1.导入import组件。 2.声明组件。3.组件标签显示组件。
import { HelloWorld } from "./components/HelloWorld.vue";

export default {
  components:{HelloWorld},
  data(){
    return{}
  },
  methods:{
    getHello(){
      console.log(this.$refs.hello.msg)
    }
  },
}
</script>

<style>

</style>
子组件:
<template>
  <div>
    <!-- 子组件 -->
    {{msg}}
  </div>
</template>

<script>
export default {
  data(){
    return{
      msg:"hello world"
    }
  }
}
</script>

<style>

</style>

调用子组件中的方法:
子组件:
<template>
<div>
  <!-- 子组件 -->
</div>
</template>

<script>
export default {
  methods:{
    open(){
      // 打印
      console.log("方法调用到了。");
    }
  }
}
</script>

<style></style>
父组件
<template>
  <div id="app">
    <HelloWorld ref="hello"/>
    <button @click="getHello">获取helloworld组件中的值</button>
  </div>
</template>

<script>
//1.导入子组件。2.声明子组件。3.组件标签。

import HelloWorld from "./components/HelloWorld.vue";
export default {
  components:{HelloWorld},
  data(){return{}},
  methods:{
    getHello(){
      this.$refs.hello.open();
    },
  }

}
</script>

<style>

</style>

子组件调用父组件的方法
子组件
<template>
<!-- 这是子组件 -->
  <div></div>
</template>

<script>
export default {
  open(){
    console.log("调用了父组件中的方法。");
    // 调用了父组件中的方法  用this.$emit中写父组件的方法。this.$emit("refreshData");
  }
}
</script>

<style></style>
父组件
<template>
<!-- 这是父组件 -->
  <div id="app">
    <HelloWorld>
  </div>
</template>

<script>
import { HelloWorld } from "./components/HelloWorld.vue";
export default {
  components:{
    HelloWorld
  },
  data(){
    return{}
  },
  methods:{
    getHello(){
      this.$refs.hello.open()
    },
    getData(){
      console.log('11111');
    }
  }
}
</script>

<style>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值