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)