效果图:
问题描述:当我根据后台数据回显后, 点击删除tagA 其实删除的是tagB
原因:由于顺序错误的问题导致的, 回显顺序和数据源顺序不一样
分析:
el-cascader 的tag 是按照index排序的 所以 如果后端返回的数据顺序和你提交时的顺序不一致就会出现 tag名称会回显出来 但是点击删除tag是删除的其他tag 通过remove-tag api 打印发现 当前id并不是当前name 的id 查看源码发现是 排序问题 但是怎么能让后端返回的顺序是你原始数据的顺序呢 ?
既然我自己选择出来的tag 没问题 就说明 选出来的数据是有排序的 所以曲线救国 ,在后端返回数据时 将选中数据赋值给绑定的值 就解决了排序问题
templete:
js:
// 编辑
handleEdit () {
this.$axios
.get(this.$server + '/organization/getOrgById', {
params: {
orgId: this.orgId
}
})
.then(res => {
if (res.data.code === '0') {
if (res.data.data.reviewOrgIds) { // res.data.data.reviewOrgIds是要回显的数据
this.formData1.reviewOrgIds = res.data.data.reviewOrgIds // 先赋值让tag先选中
setTimeout(() => {
this.formData1.reviewOrgIds = this.$refs.cascader.getCheckedNodes(true).map(res => {
return res.value
}, 2000)
}) // 这一步是 把他选中的数据选出来就是排序后的
}
}
});
},