为了看起来好看,就用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
}
}
?掰掰~