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

做vi网站管理课程培训

做vi网站,管理课程培训,模板网站建设公司,阿里云的网站建设好不好elementui 的 table 组件回显问题 "vue": "^2.7.16", "element-ui": "^2.15.14", 问题描述: 场景:首先我们是通过接口获取到数据之后 然后将返回的数据回显到表格上面 问题:直接将后端返回的数据…

elementui 的 table 组件回显问题

"vue": "^2.7.16",
"element-ui": "^2.15.14",

问题描述:

场景:首先我们是通过接口获取到数据之后 然后将返回的数据回显到表格上面

问题:直接将后端返回的数据循环的通过toggleRowSelection进行回显,发现无法选中!

问题出现的原因

通过 element 源码发现,table 在回显的时候必须使用表格里面的对象(实际是引用的地址),但实际上后端返回的数据对象是另一个对象地址 两者不是一样的 所以无法回显

源码地址:https://github.com/ElemeFE/element/blob/v2.15.14/packages/table/src/util.js

export function toggleRowStatus(statusArr, row, newVal) {let changed = false;const index = statusArr.indexOf(row);const included = index !== -1;const addRow = () => {statusArr.push(row);changed = true;};const removeRow = () => {statusArr.splice(index, 1);changed = true;};if (typeof newVal === 'boolean') {if (newVal && !included) {addRow();} else if (!newVal && included) {removeRow();}} else {if (included) {removeRow();} else {addRow();}}return changed;
}

在做对比的时候使用了 const index = statusArr.indexOf(row)。
因为table的数据是来自列表接口返回的list,而选中的模版是从详情接口里面获取的,对象的引用改变了。
所以 statusArr.indexOf(row) 找不到对象,toggleRowSelection 不会生效。

所以想要生效,只能将详情的数据取找 table 的数据 将找到的 table 数据通过toggleRowSelection进行回显。

全部代码:

<template><div><el-tableref="multipleTable":data="tableData"tooltip-effect="dark"style="width: 100%"row-key="id"@select="handleSingleSelect"><el-table-columntype="selection"width="55"reserve-selection></el-table-column><el-table-column label="日期" width="120"><template slot-scope="scope">{{ scope.row.date }}</template></el-table-column><el-table-column prop="id" label="id" width="120"></el-table-column><el-table-column prop="name" label="姓名" width="120"></el-table-column><el-table-columnprop="address"label="地址"show-overflow-tooltip></el-table-column></el-table><div style="margin-top: 20px"><span>需要回显的数据</span><br><div v-for="(item, index) in beforeSelect" :key="index">{{ item }}</div></div><div style="margin-top: 20px"><el-button @click="clearAllSelection()">清除所有选中</el-button><el-button @click="correctDisplayBeforeSelection()">回显之前选中的数据(正确的方式)</el-button><el-button @click="errorDisplayBeforeSelection()">回显之前选中的数据(错误的方式)</el-button><br>------------<br><el-button @click="getResponseSelectionData()">模拟后端返回的数据</el-button><el-button @click="correctResponseDisplayBeforeSelection()">回显后端返回的的数据(正确的方式)</el-button><el-button @click="errorResponseDisplayBeforeSelection()">回显后端返回的的数据(错误的方式)</el-button><br><br><el-button @click="clearBeforeSelection()">清空需要回显的数据</el-button></div></div>
</template><script>
export default {data() {return {tableData: [{date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 0,},{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 1,},{date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 2,},{date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 3,},{date: '2016-05-08',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 4,},{date: '2016-05-06',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 5,},{date: '2016-05-07',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',id: 6,},],multipleSelection: [],beforeSelect: [],};},methods: {clearAllSelection() {this.$refs.multipleTable.clearSelection();},correctDisplayBeforeSelection() {this.beforeSelect.forEach((s) => {this.$refs.multipleTable.toggleRowSelection(s, true);});},errorDisplayBeforeSelection() {const copyData = JSON.parse(JSON.stringify(this.beforeSelect))copyData.forEach((s) => {this.$refs.multipleTable.toggleRowSelection(s, true);});},getResponseSelectionData() {const responseData = [{// date: '2016-05-06',// name: '王小虎',// address: '上海市普陀区金沙江路 1518 弄',id: 5,},{// date: '2016-05-07',// name: '王小虎',// address: '上海市普陀区金沙江路 1518 弄',id: 6,},];this.beforeSelect = responseData},handleSingleSelect(selection) {console.log('selection', selection);this.beforeSelect = selection;},clearBeforeSelection() {this.beforeSelect = []},errorResponseDisplayBeforeSelection() {this.beforeSelect.forEach((s) => {this.$refs.multipleTable.toggleRowSelection(s, true);});},correctResponseDisplayBeforeSelection() {this.tableData.forEach(s => {this.beforeSelect.forEach(v => {if (s.id === v.id) {this.$refs.multipleTable.toggleRowSelection(s, true);}})})}},
};
</script>

http://www.zhongyajixie.com/news/3860.html

相关文章:

  • 视频播放网站开发教程重庆网站seo推广公司
  • 网站全面详细创建步骤外贸定制网站建设电话
  • 做酒店需要怎么上网站网站怎么做外链
  • 查询企业的网站有哪些关键词优化排名软件
  • 网站首页url是什么培训心得体会感悟
  • web做网站怎么添加内容营业推广是什么
  • 做国外网站关键词用写阿里网站seo
  • wordpress怎么跟vueseo是什么意思中文
  • 宇锋网站建设怎么做网站推广
  • 企网官方网站凡科建站靠谱吗
  • 安徽淮北做网站的公司有哪些软件培训
  • 煤棚球形网架公司seo视频教程百度云
  • 山东枣庄滕州网站建设凡科建站小程序
  • 网站接入商排名国内军事新闻最新消息
  • 技术支持::天空网络-临汾做网站资源网站优化排名软件公司
  • mantra wordpressseo sem
  • 手表商城网站建设方案怎么提高seo关键词排名
  • 响应式网站 英文友链交换
  • 建立网站的原因收录优美的图片app
  • 济南网站建设 首选搜点网络站长工具网
  • 云商城之歌百度seo怎么查排名
  • 做网站软件j百度信息流投放技巧
  • 企业网站管理名词解释怎么制作一个简单的网页
  • 做网站怎么设置会员赣州seo
  • 果洛电子商务网站建设哪家好seo服务哪家好
  • 做内贸在哪些网站上找客户安卓优化大师app下载
  • 南昌金启网站建设江苏网页定制
  • 如何提高网页设计直通车关键词怎么优化
  • 织梦网做网站大学生网络营销策划书
  • 做网站服务器在哪买如何去推广