elment slider 滑块遇到的问题

图片描述

说一下遇到的问题,滑动其中一个滑块,其他滑块也需要跟着变化,三个滑块的总值固定,但当变化值的二分之一(负数的绝对值)大于其中一个原始值的时,就会出现数据总值不对的情况,如下图
图片描述

下面贴一下代码
<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是用来记录变化前的初始值的  
  
阅读 4.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题