vue table直接定位到指定元素的操作代码
作者:_houjie 时间:2024-05-09 15:14:57
vue+element中的表格,直接定位到指定的元素。
需求:点击某一个节点,弹窗,直接定位到点击的节点,高亮并显示数据。
<el-table ref="highTable" :data="treeData" highlight-current-row border default-expand-all row-key="'id" :tree-props="{children:'children',hasChildren:'hasChildren'}" :row-style="rowClassRender" :row-class-name="tableRowClassName">
...
</el-table>
treeData是我的树状数据,表格树。
default-expand-all:是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效;
row-style:行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style; //高亮显示
row-class-name:行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。 //获取index(我用的是树状数据,如果是列表数据就不需要)
rowClassRender({
row
}) {
if (row.id === this.currentItemId) {
return {
'background-color': 'red'
}
} else {
return ''
}
},
tableRowClassName({
row,
index
}) {
//this.nodeItem是我最开始点击的节点
if (row.id === this.nodeItem.id) {
this.currentIndex = index;
}
}
注意:一定要在获取数据之后去赋值!!!不然scrollTop一直为0!!!!!
在获取列表的代码块中:
let divT = this.$refs.hightTable;
this.$nextTick(()=>{
divT.scrollTop = 36 * this.currentIndex
})
vue中table表格做定位处理
需求:前端根据搜索条件中的partNo的值,进行定位查询到table列表中对应的每一行
search(){
if(this.positionIndx.length==0){
this.tableData.forEach((item,index)=>{
if(item.partNo == this.queryForm.partNo){
this.positionIndx.push(index) // 定义一个空数组 positionIndx 用来保存相同partNo的下标;
}
})
}
if (this.tableData.length > 0) {
if (this.queryForm.partNo !== '') {
if (this.$refs['selectPartRefs']) {
let vmEl = this.$refs['selectPartRefs'].$el // selectPartRefs 是table中绑定的ref的值,一定要保持一致;
//计算滚动条的位置
const targetTop = vmEl.querySelectorAll('.el-table__body tr')[this.positionIndx[this.inPosition]].getBoundingClientRect().top // 找到table中的每一行利用下标来计算每一行dom元素的上部与浏览器的可视窗口的上面的高度距离;
const containerTop = vmEl.querySelector('.el-table__body').getBoundingClientRect().top
const scrollParent = vmEl.querySelector('.el-table__body-wrapper')
scrollParent.scrollTop = targetTop - containerTop;
this.inPosition++; // 首先在data中定义 inPosition = 0 ,每次点击search按钮的时候,让下标进行++操作,以遍定位到下一个匹配的partNO;
if( this.inPosition >= this.positionIndx.length ){
this.inPosition = 0; // 所有的都遍历完成以后,让定位回到第一个匹配的partNo的行上,以此达到可以循环定位的效果;
}
}
} else {
this.$message({
type: 'error',
message:'Please enter the partNo of the query'
})
}
}
},
来源:https://www.cnblogs.com/houBlogs/p/16921224.html
标签:vue,定位,指定元素
0
投稿
猜你喜欢
python GUI模拟实现计算器
2023-01-08 22:20:40
详解如何修改jupyter notebook的默认目录和默认浏览器
2022-07-01 14:34:54
TensorFlow梯度求解tf.gradients实例
2023-08-16 17:26:03
JavaScript刷新页面的几种方法总结
2024-04-22 12:53:01
Python实现检测文件MD5值的方法示例
2023-05-08 11:41:45
Python进程管理神器Supervisor详解
2023-01-19 00:57:19
python实现电子词典
2023-05-14 00:29:01
在ASP中使用SQL语句之5:开始执行
2007-08-11 12:36:00
python实现关键词提取的示例讲解
2021-09-02 05:38:58
vuex 如何动态引入 store modules
2024-04-30 08:45:44
基于Python实现文件的压缩与解压缩
2023-12-24 09:07:58
Golang创建构造函数的方法超详细讲解
2024-05-08 10:15:27
Python实现PS图像调整黑白效果示例
2022-08-06 09:15:13
Python 操作 ElasticSearch的完整代码
2021-07-10 17:26:41
MySQL中如何定义外键
2010-03-09 16:18:00
Python实现敏感词过滤的4种方法
2021-10-01 06:21:08
tensorflow实现加载mnist数据集
2022-02-06 06:20:24
Dreamweaver4探谜系列(1)
2010-09-05 21:12:00
在Vue中用canvas实现二维码和图片合成海报的方法
2024-05-09 09:53:23
如何利用pyecharts画好看的饼状图
2021-04-19 09:07:19