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

长沙高端网站建设公司短视频新媒体推广

长沙高端网站建设公司,短视频新媒体推广,北京市门头沟有没有做网站的,网站建设公司自贡$refs 与 $el是什么? 作用是什么? ref,$refs,$el ,三者之间的关系是什么? ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式,就需要先给元素设定一个 class 一样,同理,…

$refs 与 $el是什么? 作用是什么? ref,$refs,$el ,三者之间的关系是什么?

ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式,就需要先给元素设定一个 class 一样,同理,你想获取哪个元素的 DOM,就给这个元素先设定一个 ref,其实这里和 JS 中的 document.各种方法获取 DOM 差不多,不过 ref 是访问 VUE 虚拟出来的DOM,这样可以有效的减少性能消耗。

简述三者区别:

  • ref :是 元素的属性,用于设置在元素上
  • $refs :是 ref 的集合,集合里面包含了当前.vue中的所有 ref用于获取普通元素中的 DOM 以及 子组件中方法/参数的
  • $el :是 用于获取组件内 DOM(包括子组件,当前.vue组件,以及父组件)

1:点击按钮“确定”触发其他元素上的事件

<template><div class="content"><div><el-button type="success"  @click="handleSubmit">确定</el-button><!-- 设定 ref="passA" elementui组件按钮--><el-button ref="passA" type="success" @click="handlePassA">被触发 A</el-button></div><!-- 设定 ref="passB" 普通按钮触发事件 --><div style="height:40px; width:100px; background: burlywood;" ref="passB" @click="handlePassB">被触发 B</div></div>
</template>
handleSubmit(){/** 有同学看到这里会问:咦,博主,你这里写法为什么不同呀?* 嗯,这位同学不错,问到正题上了,避免了你在实际运用中出现问题* 因为 ref="passA" 的按钮,它是 element ui 提供的组件,* 组件本身不是 DOM,所以需要 .$el 的帮助后才能提取组件的 DOM* 反之,对于提取普通元素上的 DOM ,就不需要了*/this.$refs.passA.$el.click()this.$refs.passB.click()console.log(this.$refs)
},
handlePassA(){console.log('我是 PassA, 我报触发了')console.log('我自己的高度 =>',this.$refs.passA.$el.offsetHeight)
},
handlePassB(){console.log('我是 PassB, 我报触发了')console.log('我自己的高度 =>',this.$refs.passB.offsetHeight)
},

2.页面加载,获取当前.vue文件中整体元素高度

mounted(){/** 这里通过 this.$el 直接获取当前.vue文件整体 DOM*/console.log(this.$el)console.log('我是 当前.vue文件 整体的高度 =>',this.$el.offsetHeight)console.log('我是 PassB 我自己的高度 =>',this.$refs.passB.offsetHeight)
},

  这里通过 class=“content” 与上图中控制台输出的 整体DOM最外层的 calss 比照,可以更好的理解

3.父组件,调用子组件内的方法/参数(这里的例子是页面加载直接调用)

子组件:

<template><div><div class="border"><div>我是子组件</div>  <input v-model="value" /></div></div>
</template><script>import {mapGetters} from 'vuex'export default {name: 'user-defined',data() {return {value: 0,list: [1,2,3,4]}},methods: {handleAddNum(){console.log('我是子组件里的方法')this.value = this.value + 1;// 获取父组件DOMlet parentDom = this.$parent.$el;}}
}
</script>
<style scoped lang="scss">
.border{width: 300px;height: 200px;border: 1px solid red;
}
</style>

父组件:

<template><div class="content"><div><el-button type="success"  @click="handleSubmit">確定</el-button><!-- 设定 ref="passA" --><el-button ref="passA" type="success" @click="handlePassA">被触发 A</el-button></div><!-- 设定 ref="passB" --><div style="height:40px; width:100px; background: burlywood;" ref="passB" @click="handlePassB">被触发 B</div><!-- 子组件 设定 ref="userDefined" --><user-defined ref="userDefined"></user-defined></div>
</template><script>
import userDefined from './user-defined.vue' // waves directive
import {mapGetters} from 'vuex'export default {name: 'AdminPassword',components: {userDefined},mounted(){// 调用 子组件方法this.$refs.userDefined.handleAddNum()// 调用 子组件list参数console.log(this.$refs.userDefined.list)// 输出 $refs 内的集合console.log(this.$refs)},methods: {handleSubmit(){this.$refs.passA.$el.click()this.$refs.passB.click()console.log(this.$refs)},handlePassA(){console.log('我是 PassA, 我报触发了')console.log('我自己的高度 =>',this.$refs.passA.$el.offsetHeight)},handlePassB(){console.log('我是 PassB, 我报触发了')console.log('我自己的高度 =>',this.$refs.passB.offsetHeight)},}
}
</script>

4.什么情况/场景中使用 this.$nextTick(()=>{}),它的作用是什么?

<template><div class="content"><!-- elementui中的组件按钮 --><el-button type="success"  @click="handleSubmit">获取下方div中文本</el-button><!-- 设定 ref="myDiv" 普通按钮--><div ref="myDiv" style="width: 100px; height: 40px; border: 1px solid red;">{{text}}</div></div>
</template>
data(){return{text: '我今年12岁'}
},
methods: {handleSubmit(){/** 为什么我打印出来的不是 【我今年13岁】 呢?* 因为 DOM 的值还没有更新完毕,所以这里打印的依然是【我今年12岁】*/this.text = '我今年13岁'console.log('打印 =>',this.$refs.myDiv.innerHTML) // 打印结果:我今年12岁}
}

created(){console.log('created =>',this.$refs.myDiv)/** 因为生命周期执行顺序的缘故,vue 实例刚刚创建完毕 , DOM 还没有进行渲染,所以* 打印结果:created => undefined* 如果你在这里输出 this.$refs.myDiv.innerHTML 控制台还会报错,提示 myDiv 不存在*/this.$nextTick(()=>{console.log('created =>',this.$refs.myDiv.innerHTML)/** this.$nextTick 监视 DOM 的更新* 会进入 红灯停状态,DOM 更新完毕后,就会进入 绿灯行驶状态* 打印结果:created => 我今年12岁*/})
},
methods: {handleSubmit(){this.text = '我今年13岁'/** this.$nextTick 的作用是什么?* 它的作用类似:前方道路正在施工,施工完毕后可正常行驶* DOM 更新完毕后,就会执行 this.$nextTick 内的代码*/this.$nextTick(()=>{console.log('打印 =>',this.$refs.myDiv.innerHTML) // 打印结果:我今年13岁})}
}

http://www.mmbaike.com/news/28051.html

相关文章:

  • b2b网站优化怎么做体验营销策略有哪些
  • 没有外贸网站 如果做外贸免费网站推广软件哪个好
  • 访问自己做的网站吗旅游app推广营销策略
  • 特卖网站设计今日时事新闻
  • 中国特种做业人员备案考核是什么网站免费网页在线客服制作
  • 学校网站建设作用今日重大新闻头条财经
  • 招聘企业网站建设模块微信运营工具
  • 外贸福步论坛官网seo优化系统
  • 服装网站建设任务表合肥seo按天收费
  • 网络公司如何建网站佛山营销型网站建设公司
  • 人力资源公司网站模板郑州seo服务
  • 大团企业网站制作搜索引擎数据库
  • 导入表格数据做地图网站站长工具seo综合查询官网
  • sublime做网站如何引流推广产品
  • 如何推广新品网站整站优化
  • 网站建设 海口搜索到的相关信息
  • 动态网站建设软件微信营销管理软件
  • 网站后台管理系统多少钱域名历史查询工具
  • 电商网站设计实例百度智能建站系统
  • 好的网站建设西安网络科技有限公司
  • 辅助wordpress 页面编辑网站网络优化外包
  • 租车公司网站 模板seo教程书籍
  • 如何做网站的导航栏他达拉非片和伟哥区别
  • 做电商的批发网站网上销售方法
  • 花钱想贷款结果成了做网站网络服务器有哪些
  • 莆田网站建设模板刚刚北京传来重大消息
  • 山西企业模板建站网站宣传
  • asp网站怎么下载源码小程序开发框架
  • 定手机网站建设镇江网页设计
  • 自己做网站的流程视频教程seo神器