忆点点

uni-app 中怎么获取所有checkbox 选中的值

电脑版发表于:2024/9/20 11:09

官方文档:https://uniapp.dcloud.net.cn/component/checkbox.html
这个文档的示例真的太少了,就光一个获取所有checkbox 选中的值都没有…..

template

  1. <checkbox-group @change="methods.checkboxChange">
  2. <template v-for="(item, index) in state.messages" :key="index">
  3. <checkbox :value="item.id" checked="true" />
  4. </template>
  5. </checkbox-group>

Script

下面的方法有两个,一个是绑定的checkbox-group的改变事件,在这个事件中可以获取到所有选中的值,就是_params.detail.value。但是如果没有改变过复选框的选中状态就是默认的获取状态,可以获取所有选中的时候还要根据这两种情况来进行判断,感觉还是挺麻烦的如果给checkbox-group封装一个v-model直接绑定一个列表就是所有选中的值多好,但是试了一下并不支持。

下面的getAllChoise方法就是获取所有checkbox 选中的值,具体逻辑看注释把。

  1. const state = reactive({
  2. messages: [],
  3. // 用于存储所有选中的checkbox的值
  4. checkedList: [],
  5. // 是否改变了复选框的选中状态
  6. isChangeChoise:false,
  7. });
  8. const methods = {
  9. checkboxChange(_params){
  10. console.log("获取复选框选中的值",_params.detail.value);
  11. state.checkedList = _params.detail.value
  12. state.isChangeChoise=true
  13. },
  14. getAllChoise() {
  15. let allChoise = []
  16. // 如果复选框改变过就以改变事件里边的来,否者默认就是当前数据源的全部
  17. if(state.isChangeChoise){
  18. console.log("没复选框改变过就以改变事件里边的来")
  19. allChoise = state.checkedList
  20. }
  21. else{
  22. console.log("没有改变过选中,默认就是当前数据源的全部")
  23. for (let index = 0; index < state.messages.length; index++) {
  24. const element = state.messages[index];
  25. allChoise.push(element.id)
  26. }
  27. }
  28. console.log("看看所有选中的值", allChoise);
  29. // 转化成字符串形成方便回传到后台去操作
  30. let allChoiseStr = ""
  31. for (let index = 0; index < allChoise.length; index++) {
  32. const element = allChoise[index];
  33. allChoiseStr+= element+","
  34. }
  35. console.log("看看转化成字符串的内容:", allChoiseStr);
  36. }
  37. }
关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
猜你喜欢
      /