Vue this.$refs的作用

x33g5p2x  于2022-07-20 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(855)

案例一、ref 写在标签上时

  1. <!-- ref 写在标签上时:this.$refs.名字 获取的是标签对应的dom元素
  2. ref 写在组件上时:这时候获取到的是 子组件(比如counter)的引用-->
  3. <div id="root">
  4. <!-- ref = 'hello': 给div 起了一个引用的名字 hello -->
  5. <div
  6. ref = 'hello'
  7. @click = "handleClick">
  8. laugh yourself
  9. </div>
  10. </div>
  11. <script>
  12. var vm = new Vue({
  13. el: '#root',
  14. methods: {
  15. handleClick: function() {
  16. //this.$refs : 获取整个Vue实例中所有的引用 然后再找到hello这个引用 指向div那个dom节点
  17. //console.log(this.$refs.hello)
  18. alert(this.$refs.hello.innerHTML)
  19. }
  20. }
  21. })
  22. </script>

案例二、 ref 写在组件上时
计数:

  1. <!-- ref 写在标签上时:this.$refs.名字 获取的是标签对应的dom元素
  2. ref 写在组件上时:这时候获取到的是 子组件(比如counter)的引用-->
  3. <div id="root">
  4. <!-- 子组件触发了事件 这里父组件(模板区里面)监听该事件 调用handleChange方法
  5. 因此handleChange方法定义在父组件的methods里面-->
  6. <counter ref="one" @change="handleChange"></counter>
  7. <counter ref="two" @change="handleChange"></counter>
  8. <div>{{total}}</div>
  9. </div>
  10. <script>
  11. Vue.component('counter', {
  12. template: '<div @click="handleClick"> {{number}} </div>',
  13. data: function() {
  14. return {
  15. number: 0
  16. }
  17. },
  18. methods: {
  19. handleClick: function() {
  20. this.number ++
  21. //子组件向父组件传值 子组件被点击的时候 number+1 同时告诉外面 也即是触发一个事件
  22. this.$emit('change')
  23. }
  24. },
  25. })
  26. var vm = new Vue({
  27. el: '#root',
  28. data: {
  29. total: 0
  30. },
  31. methods: {
  32. handleChange: function() {
  33. //在此方法中计算两个数量的和 通过this.$refs.引用名字 获取两个子组件的引用
  34. this.total = this.$refs.one.number +
  35. this.$refs.two.number
  36. }
  37. }
  38. })
  39. </script>

相关文章