首页 > 其他分享 >springboot+vue学习

springboot+vue学习

时间:2023-10-22 14:55:19浏览次数:35  
标签:vue springboot form checkList 学习 item key 动态

最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括 checkbox 表单类型,并且使用 Element 组件 UI 时,此时 v-model 绑定的数据也是动态生成的

例如:
定义的 data 的 form 里面是空对象,需要动态生成里面的 key

export default {
  data() {
    return {
      form: {}
    }
  },
}

从后端接口得到 checkList,这个就是动态生成的表单数据

v-for 循环 checkList,得到 key,然后直接 v-model="form.key" 动态生成 form 里面的 key

<el-form-item :label="item1.name+`:`" v-for="item1 in checkList" :key="item1.id">
  <el-checkbox-group v-model="form[`${item1.code}`]">
    <el-checkbox
      :label="item2.id"
      v-for="item2 in item1.values"
      :key="item2.id">
      {{ item2.value }}
    </el-checkbox>
  </el-checkbox-group>
</el-form-item>

问题来了

当页面点击动态生成的 CheckBox 方框,会出现全选的情况,查看 vue 数据,显示如下:

正常的情况 CheckBox 的绑定数据类型是数组形式

那我在动态生成的时候,就它置为数组格式:

this.checkList.forEach(item => {
  let key = item.code
  this.form[key] = []
})

但还是没用,会发现点击任何 CheckBox 都无法勾选

解决

这是 vue 的深入响应式原理,官方说法和解决方法:

Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)
然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上

现在明白了,可以使用 Vue.set 方法解决这个深入式响应原理

this.checkList.forEach(item => {
  let key = item.code
  this.$set(this.form, key, [])
})

标签:vue,springboot,form,checkList,学习,item,key,动态
From: https://www.cnblogs.com/zjsdbk/p/17780447.html

相关文章

  • # 2023-2024-1 20231322 《计算机基础与程序设计》第四周学习总结
    作业信息|2023-2024-1-计算机基础与程序设计|(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP))||2023-2024-1计算机基础与程序设计第四周作业||这个作业的目标|总结第四周学习过程中的疑问及收获||作业正文|(https://www.cnblogs.com/cjl03/p/17780446.html)|教材学习......
  • npm安装datav-vue3(一个大屏边框和装饰组件)后报错Failed to resolve entry for packa
    原因:个人认为应该是npm上的版本比较低,因为弄好后装饰只能用到第8个,后面的都没有,查看package.json里它的版本为^0.0.0-test.1672506674342,也就是说还没有正式版,在官方的说明里也有体现---[目前还处于Alpha阶段,所有的API及Props都可能在后续迭代中发生变化]介绍|DataV......
  • 2023/10/21 学习笔记
    vrrp与DHCPvrrp报文协议advertisement(心跳线)--目的ip地址224.0.0.18,目的mac地址01-00-5e-00-00-122,协议号是112.状态机:(优先级0-255) 默认0-2550代表主要退出255代表有设备和虚拟ip冲突可手动配置1-254优先级相同会比较接口地址大的优先优先级默认为10......
  • 信息安全系统设计与实现学习笔记6
    自学笔记6-重点总结1.Unix/Linux进程管理进程是对映像的执行。进程的产生是通过执行一个程序或指令,将程序加载到内存中成为一个独立的实体,并分配一个唯一的PID。子进程与父进程的关系:在bash中再调用bash时,会形成父子关系。注意要正确处理父进程生成子进程后的情况。......
  • 学习笔记6
    第3章Unix/Linux进程管理1.Unix/Linux中的进程什么是进程:进程是计算机中正在执行的程序的实例。每个进程有自己的内存空间、寄存器状态、文件描述符等信息,使其独立于其他进程。进程通常包括程序代码、数据、栈、堆以及进程控制块(ProcessControlBlock,PCB)等信息。进程状态:......
  • 深度学习驱动的图像场景分类:窥探视觉智能的未来【图像场景实战】
    图像场景分类是计算机视觉领域的重要任务之一,它涉及将图像分为不同的场景类别,如城市街景、山脉风景、海滩等。本文将介绍基于深度学习的图像场景分类方法,并提供相应的代码实例,展示了深度学习在图像场景分类中的技术深度和应用前景。图像场景分类是计算机视觉中的一项关键任务,对于图......
  • Springboot基础
    接口测试工具:postman参数原始方法Springboot方式复杂实体参数数组实体参数日期参数JSON参数路径参数响应数据......
  • CAN协议信号位-大小端学习记录
    CAN协议信号位-大小端学习进入汽车行业虽然是软件开发但是对底层的信号传递还是很感兴趣的,深入的学习了一下CAN协议中提到的大小端内容。还挺有意思的。我抽几个信号进行学习推断。有很多信号的推断我直接附上手绘图片仅记录一下分析过程。前提条件:了解DBC数据库文件能看懂了......
  • 编程学习思考
    编程学习的思考2023-10-2114:50:29星期六(初稿)大家好!自从大一开始进入计算机科学与技术专业学习,便就开始踏入编程的学习之旅。又是一个秋季,整整三年了!三年以来,自然是有不少成长,现在回想,这一路中也遇到很多的挫折,也受到过许多”愚蠢“的思想的影响···,跌跌撞撞地前行,当然在这......
  • [Vue]事件修饰符
    Vue中的事件修饰符:1.prevent:阻止默认事件(常用);2.stop:阻止事件冒泡(常用);3.once:事件只触发一次(常用);4.capture:使用事件的捕获模式;5.self:只有event.target是当前操作的元素是才触发事件;6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕;          一......