export.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <view>
  3. <!-- 多个复选框,带全选 -->
  4. <view>
  5. <checkbox-group class="block" @change="changeCheckbox">
  6. <view v-for="item in newDeviceManage" :key="item.id">
  7. <checkbox :value="String(item.id)" :checked="checkedArr.includes(String(item.id))" :class="{'checked':checkedArr.includes(String(item.id))}"></checkbox>
  8. <text>{{item.title}}</text>
  9. </view>
  10. </checkbox-group>
  11. </view>
  12. <view>
  13. <checkbox-group @change="allChoose">
  14. <label>
  15. <checkbox value="all" :class="{'checked':allChecked}" :checked="allChecked?true:false"></checkbox> 全选
  16. </label>
  17. </checkbox-group>
  18. </view>
  19. </view>
  20. </template>
  21. <script>
  22. export default {
  23. data() {
  24. return {
  25. isChecked:false,
  26. newDeviceManage:[
  27. {'id':0,'title':'选项一'},
  28. {'id':1,'title':'选项二'},
  29. {'id':2,'title':'选项三'},
  30. {'id':3,'title':'选项四'},
  31. {'id':4,'title':'选项五'},
  32. {'id':5,'title':'选项六'},
  33. {'id':6,'title':'选项七'},
  34. {'id':7,'title':'选项八'},
  35. {'id':8,'title':'选项九'},
  36. {'id':9,'title':'选项十'}
  37. ],
  38. checkedArr:[], //复选框选中的值
  39. allChecked:false //是否全选
  40. }
  41. },
  42. methods: {
  43. // 多选复选框改变事件
  44. changeCheckbox(e){
  45. this.checkedArr = e.detail.value;
  46. // 如果选择的数组中有值,并且长度等于列表的长度,就是全选
  47. if(this.checkedArr.length>0 && this.checkedArr.length==this.newDeviceManage.length){
  48. this.allChecked=true;
  49. }else{
  50. this.allChecked=false;
  51. }
  52. },
  53. // 全选事件
  54. allChoose(e){
  55. let chooseItem = e.detail.value;
  56. // 全选
  57. if(chooseItem[0]=='all'){
  58. this.allChecked=true;
  59. for(let item of this.newDeviceManage){
  60. let itemVal=String(item.id);
  61. if(!this.checkedArr.includes(itemVal)){
  62. this.checkedArr.push(itemVal);
  63. }
  64. }
  65. }else{
  66. // 取消全选
  67. this.allChecked=false;
  68. this.checkedArr=[];
  69. }
  70. }
  71. }
  72. }
  73. </script>
  74. <style>
  75. </style>