iview框架table数据渲染问题

3 篇文章 0 订阅
1 篇文章 0 订阅

最近接手了一个vue+iview框架的运营管理系统,有一个需求是,有一个表格,表格的一列数据是固定的,其余数据接口返回。但是接口会返回给你一个数组,数组中只有表格的某几列。
要求是根据返回的数组,去渲染表格中相对应的那几列。

原始表格是这样的
id时间状态操作
01修改
02修改
03修改
04修改
希望渲染的效果是这样的
id时间状态操作
012021/7/1成功修改
022021/7/1成功修改
03修改
04修改

后端返回的数组是这样的

arr1= [
	{
		id:1,
		time:2021/7/1,
		status:1,
	},
	{
		id:2,
		time:2021/7/1,
		status:1,
	}
]

table的数据是动态渲染的,如果直接把返回的数组赋值给table的话,那就只有两项了。无法对其他项进行操作。

id时间状态操作
012021/7/1成功修改
022021/7/1成功修改

所以现在就要处理数组了。数组要有4项,并且有修改记录的要更新表格数据。
直接上代码(这里有很多种方法,仅参考)

//原始数组
tableData: [
            {
                 id: "01",
                 time: "",
                 status: "",
                 operation:""
             },
             {
                 id: "02",
                 time: "",
                 status: "",
             },
             {
                 id: "03",
                 time: "",
                 status: "",
             },
         ],
//接口返回的数组
this.tableList = res.data.body.dataList
//循环初始数组
    this.tableData.forEach((item,index)=>{
    //循环返回的数组
         this.tableList.forEach((item1,index1)=>{
         //找到相同的项
             if(item. === item1.){
             //相同的话,就删除这一项,并把有数据的那一项放在这里
                this.tableData.splice(index,1,item1)
             }
         })
     })

至此,我实现了这个需求。如果数据多了的话,页面渲染有点慢,但我这个最多只有4项,就这样写了,先记录一下,以后有更好的办法再来更新。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤实现iviewtable选中某条数据删除功能: 1. 在table组件中添加selection-change事件处理函数,用于监听选中数据的变化。 ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange"> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> <TableColumn label="操作"> <template slot-scope="props"> <Button type="text" icon="ios-trash" @click="handleDelete(props.row)">删除</Button> </template> </TableColumn> </Table> </template> ``` 2. 在methods中定义handleSelectionChange方法,用于保存当前选中的数据。 ```javascript methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete(row) { // 删除选中的数据 const index = this.tableData.indexOf(row); this.tableData.splice(index, 1); // 取消选中状态 this.$refs.table.clearSelection(); } } ``` 3. 在handleDelete方法中实现删除选中的数据,并调用$refs.table.clearSelection()方法取消选中状态。 完整代码如下: ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange" ref="table"> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> <TableColumn label="操作"> <template slot-scope="props"> <Button type="text" icon="ios-trash" @click="handleDelete(props.row)">删除</Button> </template> </TableColumn> </Table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], selectedItems: [] }; }, methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete(row) { // 删除选中的数据 const index = this.tableData.indexOf(row); this.tableData.splice(index, 1); // 取消选中状态 this.$refs.table.clearSelection(); } } }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值