checkBox多选框 可修改,可撤销修改

5 篇文章 0 订阅

为了看起来好看,就用element-ui中的checkbox做举?了哦~


    <el-checkbox-group v-model="checkedTemp">
          <el-checkbox :label="'1-0'">北京</el-checkbox>
           <el-checkbox :label="'1-1'">上海</el-checkbox>
           <el-checkbox :label="'1-2'">南京</el-checkbox>
           <el-checkbox :label="'1-3'">青岛</el-checkbox>
           <el-checkbox :label="'1-4'">广州</el-checkbox>
           <el-checkbox :label="'1-5'">深圳</el-checkbox>
           <el-checkbox :label="'1-6'">山西</el-checkbox>
           <el-checkbox :label="'1-7'">陕西</el-checkbox>
           <el-checkbox :label="'1-8'">河南</el-checkbox>
           <el-checkbox :label="'1-9'">洛阳</el-checkbox>
           <el-checkbox :label="'1-10'">郑州</el-checkbox>
           <el-checkbox :label="'1-11'">苏州</el-checkbox>
           <el-checkbox :label="'1-12'">杭州</el-checkbox>
           <el-checkbox :label="'1-13'">宁波</el-checkbox>
           <el-checkbox :label="'1-14'">浙江</el-checkbox>
	 </el-checkbox-group>

上面的代码执行一下看起来就是➡️
在这里插入图片描述
从代码中可以看到,这个checkbox-group绑定了一个数组,当然就是为了记录checkbox-group中那些选中的选项啦!
大多数情况下,从后台取过来的数据都不是特别符合前端的处理规则,需要我们稍作处理,哈哈,我们的后台小哥哥还是很听话的?(点个赞.jpg)。
假如上述样式的checkbox-group取过来的数据是这样的⬇️:

city:["1", "0", "1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "0", "0", "1"]

解释一下:1表示city数组对应index的checkbox为选中状态,0则表示未选中咯~
先看看处理之后的成果吧:
在这里插入图片描述
对应的代码块如下所示:每选中一个item都要清空check列表,防止不必要的错误出现,数据绑定就是这点非常好哈哈。


    this.checkList=[],this.checkedTemp=[];
      if(rows.city){
        rows.city.forEach((item,index)=>{
          if(item == 1){
            this.checkedTemp.push('1-'+index)
          }
        });
        this.checkedTemp.forEach((item,index)=>{
          var arrT=item.split('-');
          this.checkList[arrT[1]]=1
        })
      }

经过上面的代码块块,可以看到,checkbox-group绑定的数组checkedTemp中有的项都是city数组中的‘1’项,当然,这个也需要前后端约定好对应的项所代表的模块。
那为什么还要处理一个checkList数组呢?
问得好?(鼓掌.jpg),既然是数据交互,我们也需要将用户操作之后的check列表传给后台啊,1-1,1-3,1-5这种格式你是要逼疯后台小哥哥吗?w(゚Д゚)w

假设经过一顿操作,checkbox列表变成了这个样子:
在这里插入图片描述
那么传输的时候还需要转成后台需要的统一格式,(忘了当初人家是怎么帮你转格式的嘛(๑•̀ㅂ•́)و✧!)

for(var i=this.checkList.length-1;i>=0;i--){
    if(this.checkList[i] == 1){
        checkTemp=this.checkList.slice(0,i+1);
        break
      }
    }

经过上面的块块转换,传输的数组就会是:[empty × 2, 1, 1, empty × 4, 1, 1]
看起来是对的吧?原谅我偷一步懒ヽ(✿゚▽゚)ノ(其实并没有),如果需要的是数组形式,到这一步就可以结束了哦~
当通常情况下,后台存储数据不可能存储一个大部分是1和0的数组,也太占位置了吧(我光看着都觉得占位太多),所以,机智的我们把这个1-0数组转成了字符串之后又转成了十进制的数字,这样看着舒服多啦(ˉ▽ ̄~)
好心提供代码:

var checkStr='';
for(var i=checkTemp.length-1;i>=0;i--){
        if(checkTemp[i] == 1){
          checkStr+=checkTemp[i]
        }else{
          checkStr+=0
        }
      }

?掰掰~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值