当前位置: 首页 > Web前端 > JavaScript

el-table分页数据+echo+查看状态+记录数据(地图实战)

时间:2023-03-27 02:13:41 JavaScript

本以为即使在js中学习了map也不会实际使用map,结果遇到了el-table分页查询,以及然后需要检查表格内容,切换页码并回应需要检查的选项。一开始我想的是用一个列表来维护所有检查过的数据,但是想了想,发现这个方法的实际实现还是有缺陷的。比如场景来回切换页码的时候,稍微复杂一点就容易乱。应该还是记录了每条数据的信息。当用户点击勾选时,用当前的勾选情况与勾选的数据进行对比。如果记录数据中的当前列表中有勾选的选项,而这次勾选了,则不做处理。如果未选中,该选项将从用于记录的总数据中删除。如果总记录结果没有改变数据,并且这次检查数据,添加新数据。使用map是最好的,我们来试试吧~获取新数据选择selection-change,会列出当前页码的勾选选项。接下来是它对应的句柄函数。我把处理逻辑写成备注的形式。constselectedMap=newMap();handleSelectionChange(val){//val表示当前选中的选项,属于数组类型//我们先需要一个列表,用于记录当前tableData有哪些选项,哪些没有被选中。这里我先用一个map来记录当前表中的options//然后遍历tableData,将选中的options维护在一个列表中。constcurrSelectMap=newMap();for(leti=0;i{constname=item.name;selectList.push({name,selected:currSelectMap.has(name)?true:false,});});//遍历selectList,其中记录了当前表ID中每一项的唯一值(我的名字在这里是唯一的),以及是否选择两个参数//遍历过程中,与记录的总选择数据进行比较。代码由本文中的处理逻辑组成delete(name);}if(!selectedMap.has(name)&&item.selected){selectedMap.set(name,item);}});console.log("selectedMap",selectedMap);},最后在最后,el-table在切换页码时需要额外处理,getRowKey(row){returnrow.name;},query(){//querythis.tableData=[{date:"2016-05-02",name:"王小虎4",address:"上海市普陀区金沙江路1518弄",},{date:"2016-05-04",name:"王小虎5",地址:"普陀区金沙江路上海弄1517号",},{date:"2016-05-01",name:"Wang小湖6号",地址:"上海市普陀区金沙江路1519弄",},{日期:"2016-05-03",名称:"望小湖7号",地址:"普陀区金沙江路1516弄"上海区",},];for(leti=0;i{this.$refs.myTable.toggleRowSelection(this.tableData[i],真);});}}},切换到新数据的时候需要tick,但是通过代码tick的过程会触发handleSelectionChange函数,这可能比我们预想的要差很多,具体区别在哪里,读者朋友可以去掉this.$nextTickandtryps:如果你能看懂这篇文章,你可能遇到过类似的问题哈哈