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

长沙公司网站建设seo服务外包报价

长沙公司网站建设,seo服务外包报价,企业邮箱怎么申请的,企业展厅策划公司$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.15wanjia.com/news/12439.html

相关文章:

  • 请给自己的网站首页布局可以推广的平台
  • 做网站 注册那类的商标关键词排名优化工具有用吗
  • css零基础入门教程亚马逊seo关键词优化软件
  • 网站建设宣传资料推广普通话的宣传内容
  • 做网站 成都培训机构哪家好
  • 仿今日头条网站模板百度搜索指数查询
  • 阿里巴巴官方网站百度seo关键词
  • 沼气服务网站建设管理经典seo伪原创
  • 程序员做游戏还是做网站好百度推广代运营
  • 政府 门户 网站建设谷歌浏览器官网下载安装
  • 旅游类网站设计百度指数代表什么
  • 网站推广主要怎么做广告推广网站
  • 网站备案人什么意思正规网络教育培训机构
  • 网站建设所需素材搜索引擎网站排名
  • 网站用户后台是怎么做的国外seo大神
  • 如何看一个站点是不是有wordpress长沙seo外包平台
  • 什么网站对护肤品测评做的很好最有效的恶意点击软件
  • 网站建设与管理教案怎么写个人免费自助建站网站
  • 体育评论做的好的网站注册推广赚钱一个10元
  • 想攻击一个网站怎么做长春seo网站排名
  • 网站制作合肥艾滋病多久能查出来
  • 淄博学校网站建设方案qq群排名优化
  • 地方房产网站APP如何做市场调研的五个步骤
  • 如何做高端网站建设网页模板
  • 2017湖北建设教育协会网站关键词怎么写
  • 机械免费网站制作今天刚刚发生的重大新闻
  • 给一个公司做网站维护域名seo查询
  • 保定哪有做网站的百度电话人工服务
  • 宝塔里面一个服务器做多个网站百度网址大全简单版
  • 最容易被收录的网站百度seo优化推广公司