今天通过GiantTree组件的多选实现单选的时候,遇到了一个坑,需要注意:
选择项输出函数checkedNodes_out里val中的id会重新赋值,在组件的数据里重新以1开头赋值,所以id会一样,所以id并不是唯一不同的值,唯一不同的有tId。
所以解决方法可将id改为tId。
GiantTree_DeviceList_currentNode_out(val) {
let vm = this;
vm.GiantTree_DeviceList.checkedNodes;
if (val.length > 1 && vm.selectedDevice.length > 0) {
// 找到新选择的项
let arr = vm.GiantTree_DeviceList.checkedNodes.filter(
x => !vm.selectedDevice.some(y => y.tId === x.tId)
);
// 用新选择的项给树组件的checkedNodes赋值
vm.GiantTree_DeviceList.checkedNodes = arr;
// 存储现在已经选择的
vm.selectedDevice = vm.GiantTree_DeviceList.checkedNodes;
// 将目前选择的项给outputData赋值
vm.ouputData = vm.GiantTree_DeviceList.checkedNodes[0] || null;
} else {
vm.selectedDevice = vm.GiantTree_DeviceList.checkedNodes;
vm.ouputData =
vm.GiantTree_DeviceList.checkedNodes.length > 0
? vm.GiantTree_DeviceList.checkedNodes[0]
: null;
}
},