el-cascader回显删除tag不一致的问题

问题:根据接口返回数据回显后,点击删除tag,删除的不是点击的tag,而是其他的

   点击删除name为多资产的tag

          

     结果删除的是name为转债的tag

          

原因:el-cascader组件回显数据顺序是按照级别,一层一层向下向后按照index排序,没有绑定id,删除是通过name对应的index删除,根据组件回显的数据顺序,点击删除name为多资产的tag的index为9,对应后端返回数据index为9的是:id为10且name为转债的,所以,当后端返回的回显数据顺序和组件本身回显数据顺序不一致时,就会出现这个tag删除不一致的问题。

    

    

 

解决:通过接口返回回显数据的顺序,同组件本身回显数据顺序一致即可

reSortCheckedDomainIdList (list) {
  let result = []
  this.domainOptionsList.forEach((firstLevelDomain) => {
    list.forEach((checkedId) => {
      if (checkedId === firstLevelDomain.id) {
        result.push(checkedId)
      }
    })
    if (firstLevelDomain.children) {
      firstLevelDomain.children.forEach((firstLevelDomain) => {
        list.forEach((checkedId) => {
          if (checkedId === firstLevelDomain.id) {
            result.push(checkedId)
          }
        })
      })
    }
  })
  return result
}
this.addDataForm.publishableResearchDomainIdList = this.reSortCheckedDomainIdList(this.addDataForm.publishableResearchDomainIdList)

 

posted @ 2022-07-25 15:44  蓝色的矢车菊  阅读(707)  评论(0编辑  收藏  举报