当前位置: 首页 > news >正文

vue中ref的作用及用法

(1)基本用法,本页面获取dom元素

<template>
  <div id="app">
    <div ref="testDom">11111</div>
    <button @click="getTest">获取test节点</button>
  </div>
</template>

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

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

 (2)获取子组件中的data

子组件

<template>
  <div>
      {{ msg }}
  </div>
</template>

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

父组件

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

<script>
import HelloWorld from "./components/HelloWorld.vue";

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

(3)调用子组件的方法

子组件

<template>
  <div>
  </div>
</template>

<script>
export default {
  methods: {
    open() {
      console.log("调用到了")
    }
  }
}
</script>

父组件

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

<script>
import HelloWorld from "./components/HelloWorld.vue";

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

(4)拓展:

子组件调用父组件方法

子组件

<template>
  <div>
</div>
</template>

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

父组件

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

<script>
import HelloWorld from "./components/HelloWorld.vue";

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • Vue中数据缓存localStroage
  • keep-alive实现数据缓存
  • keep-alive的使用
  • Vue项目中文件路径的引用问题
  • e.preventDefault()与e.stopPropagation()的区别
  • es6数组方法find()、findIndex()与filter()的总结
  • js数组对象(1个数组) 判断 | 两个属性值相同时,另外某个属性值相加
  • js数组对象去重(4种方法)
  • js数组对象 判断两个属性值相同时另外某个属性值相加后,再进行 去重 (项目实战提取!!!)
  • Vue2.0 $set()的正确使用详解
  • Vue的三个点es6知识,扩展运算符
  • js中forEach()和map()的区别和理解
  • VUE中watch的详细用法
  • TS-NODE 执行报错,CANNOT FIND MODULE ‘@TYPES/NODE/PACKAGE.JSON‘
  • Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 2017届校招提前批面试回顾
  • ERLANG 网工修炼笔记 ---- UDP
  • gcc介绍及安装
  • maya建模与骨骼动画快速实现人工鱼
  • Web设计流程优化:网页效果图设计新思路
  • 编写符合Python风格的对象
  • 对象管理器(defineProperty)学习笔记
  • 给github项目添加CI badge
  • 力扣(LeetCode)965
  • 聊聊sentinel的DegradeSlot
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​configparser --- 配置文件解析器​
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (一)kafka实战——kafka源码编译启动
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • ******之网络***——物理***
  • .htaccess 强制https 单独排除某个目录
  • .Net 6.0 处理跨域的方式
  • .Net core 6.0 升8.0
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net IE10 _doPostBack 未定义
  • .net 设置默认首页
  • .NET 事件模型教程(二)
  • .net(C#)中String.Format如何使用
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • :如何用SQL脚本保存存储过程返回的结果集
  • ??eclipse的安装配置问题!??
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [acm算法学习] 后缀数组SA
  • [AutoSar NVM] 存储架构