Uniapp 之 uni-table组件设置行点击事件

Posted zhuangwei_8256

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uniapp 之 uni-table组件设置行点击事件相关的知识,希望对你有一定的参考价值。

  由于 uniapp官网的uni-table组件 并没有给出设置行点击事件的events,于是自己想方法基于uni-table组件实现了表格行点击事件;

<uni-table border stripe emptyText="暂无更多数据" :loading="loading">
    <!-- 表头行 -->
    <uni-tr>
        <uni-th align="center" width="50">姓名</uni-th>
        <uni-th align="center" width="50">年龄</uni-th>
        <uni-th align="center" width="50">地址</uni-th>
    </uni-tr>
    <!-- 表格数据行 -->
    <uni-tr v-for="item in tableData" :key="item.id">
        <uni-td align="center"> item.name </uni-td>
        <uni-td align="center"> item.age </uni-td>
        <uni-td align="center"> item.address </uni-td>
    </uni-tr>
</uni-table>

在mounted 生命周期里面找到行元素,并给每个行元素设置点击事件(表头行除外)

mounted() 
	let that = this; // 箭头函数的写法可省略这行代码
	let trDoms = document.getElementsByClassName('uni-table-tr');
	let len = trDoms.length;
	for(let i = 0; i < len; i++) 
		let item = trDoms[i];
		 // table为表格绑定的数据
		 // 表头行除外直接通过this.tableData[i - 1] 是否存在判断即可
		if(this.tableData[i - 1]) 
		
			// 这里使用了箭头函数的写法,如果使用的function 的写法,请注意this的指向问题
			item.onclick = () => 
				let row = this.tableData[i - 1];
				this.getCurrentRow(row);
			;
			// function 的写法:
			// item.onclick = function() 
			//     let row = that.tableData[i - 1];
			//     that.getCurrentRow(row);
			// ;
		
	
,
methods: 
	getCurrentRow(row) 
		console.log(row);
	

这里需要注意的是,不能在uniapp 自带的页面生命周期onLoad中使用,注意该生命周期的说明:


如有不足,望大家多多指点! 谢谢!

以上是关于Uniapp 之 uni-table组件设置行点击事件的主要内容,如果未能解决你的问题,请参考以下文章

uniapp 之 uni-table组件添加行点击事件

uniapp的按钮为啥安卓端用不了

uniapp自定义组件如何全局控制

uni-view标签里添加表格

uniapp通过js唤起picker等组件 - 无需直接点击操作uniapp组件 - uniapp用JS点击某个DOM

在 uniapp 项目上使用 uView UI框架