当前位置: 首页 > Web前端 > vue.js

vue中关于$refs获取子组件的DOM节点方法

时间:2023-03-31 17:32:31 vue.js

的目标是做一个向下滚动时自动加载的表格效果。先说实现的效果。实现的思路其实很简单,就是获取表格中的tbody,然后在滚动的时候计算滚动高度,快到最后的时候加载更多。因为之前做过类似的功能,所以直接用代码。使用的是ElementUI,ref写在el-table节点上。但是一开始会报addEventListener的错误。后来查看了vue.$refs。发现vue.$refs可以获取到两种节点,一种是直接DOM节点,另一种是当'ref=xxx'放在子组件上时,vue.$ref获取的是这个子组件和Propertiesand可以使用子组件的方法。所以我当然想直接获取tbody节点。起初,我在想如何跳过子组件,直接到达目标节点,但不幸的是,我失败了。于是想到了如何通过子组件获取目标节点。可能我也笨手笨脚的,就一点一点的找。不过没关系,我找到了,在$el下面。然后就可以找到我要的目标节点了,下题就简单了,贴代码就行了。scroll(){setTimeout(()=>{this.box=this.$refs.dataTable.$el.children[2];console.log(this.$refs.dataTable)this.box.addEventListener('滚动',()=>{constclientHeight=this.box.clientHeight;constscrollTop=this.box.scrollTop;constscrollHeight=this.box.scrollHeight;if(clientHeight>=scrollHeight-(scrollTop+30)&&!this.dataLoading){console.log('到底了')this.dataLoading=true;setTimeout(()=>{this.tableData.push({dataDate:'201910-1123:23:25',measureSeconds:'58s'},{dataDate:'201910-1123:23:25',measureSeconds:'58s'},{dataDate:'201910-1123:23:25',measureSeconds:'58s'},{dataDate:'201910-1123:23:25',measureSeconds:'58s'},{dataDate:'201910-1123:23:25',measureSeconds:'58s'})this.dataLoading=false;},1000);}},错误);},500);}