在实习中,遇到了如下需求,要求如下:
上面提到了一个需求为,选择全部与选择一个或者多个互斥,我们来看一下如何解决
核心代码
监听value的变化,如果含有‘全部’,且数组长度>1,则删除第一个元素
- 先选择‘全部’,再选择其他,‘全部’会被剔除
- 先选择一个或者多个‘其他’,一个或者多个‘其他’会被剔除
- 无论怎么选择都可以实现全部与选择一个或者多个‘其他’互斥
watch: {
value(newVal) {
if (newVal.includes('全部')) {
if (newVal.length > 1) {
this.value.shift();
}
} else if (this.value.length === this.cityList.length - 1) {
// 如果选择了除“全部”外的所有城市,自动选择“全部”
this.value = ['全部'];
}
}
}