说一下遇到的问题,滑动其中一个滑块,其他滑块也需要跟着变化,三个滑块的总值固定,但当变化值的二分之一(负数的绝对值)大于其中一个原始值的时,就会出现数据总值不对的情况,如下图
下面贴一下代码
<div v-for="(item,index) in arr" :key="index">
<div v-for="(i,idx) in item.arr" :key="idx">
<el-slider v-model="i.value" style="display:inline-block;width:70%" @change="changeValue(item,i,index,idx)" :format-tooltip="formatTooltip"></el-slider>
</div>
</div>
arr:[{
value:20,
isExpand:true,
arr:[{
name:'推荐一',
status:1,
value:20,
count:20,
},{
name:'推荐二',
status:0,
value:30,
count:20,
},{
name:'推荐三',
status:0,
value:50,
count:40,
}]
}],
arr2:[{
value:20,
isExpand:false,
arr:[{
value:20,
},{
value:30,
},{
value:50,
}]
}]
changeValue(item,i,index,idx) {
let num = this.arr2[index].arr[idx].value - i.value
let num2 = 0
let obj = this.arr2[index]
let sum = 0
obj.arr.forEach(el =>{
sum +=el.value
})
if(sum != 100) {
num2 = num/(item.arr.length - 1) + (100-sum)/(item.arr.length - 1)
} else {
num2 = num/(item.arr.length - 1)
}
for(let j in item.arr) {
if(j == idx) {
item.arr[j].value = i.value
} else {
item.arr[j].value = item.arr[j].value + num2
}
}
},
arr2是用来记录变化前的初始值的