解决 Vue 动态生成 el-checkbox 点击无法赋值问题
博客地址:https://ainyi.com/68
最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括 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, [])
})
完美解决~
博客地址:https://ainyi.com/68
解决 Vue 动态生成 el-checkbox 点击无法赋值问题的更多相关文章
- vue动态生成表单
vue动态生成表单 一.下拉框 <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...
- VUE动态生成table表格(element-ui)(新增/删除)
(直接复制即可测试) 结构(红色部分 data/prop/v-model 数据绑定): <template> <el-table size="small" :da ...
- 使用Vue动态生成form表单
form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...
- vue动态生成组件
单个组件引用,引入此文件js.全局使用,注册到vue的main文件Vue.prototype.create = Create create.js import Vue from 'vue';impor ...
- 解决后端动态生成css时无法调用
在PHP 设置头 header("Content-type: text/css");
- 动态生成的DOM做点击事件无效
有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果. 例如: <section> 测试动态生成的DOM点击事件 <b ...
- 为什么JS动态生成的input标签在后台有时候没法获取到
最近在做一个产品添加的功能,需求有点奇葩,所以在添加的时候免不了要用到动态生成控件,然后我就使用了JS去动态生成一些 checkbox类型的input标签,在以前用asp.net在后台生成的input ...
- Javascript动态生成的页面信息爬取和openpyxl包FAQ小记
最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...
- ASP.NET动态生成GridView的使用
根据DataTable动态生成包含checkbox的GridView,其中DataTable中对应checkbox那一列的值必须为bool值. public static GridView Dynam ...
随机推荐
- lambda函数常见用法
# lambda 参数:返回值/表达式 # print((lambda :100)()) # f = lambda a,b : a + b # print(f(10, 20)) # f = lambd ...
- hive------ Group by、join、distinct等实现原理
1. Hive 的 distribute by Order by 能够预期产生完全排序的结果,但是它是通过只用一个reduce来做到这点的.所以对于大规模的数据集它的效率非常低.在很多情况下,并不需要 ...
- 关于ajax原理阐述
ajax是什么呢?说白了就是一个请求,一个读取服务器资源以及提交资源到服务器的中间处理机制,那它具体是怎样工作的,又有怎样的原理呢?var ajax=function(url,fnSucceed,fn ...
- Hadoop是一种开源的适合大数据的分布式存储和处理的平台
"Hadoop能做什么?" ,概括如下: 1)搜索引擎:这也正是Doug Cutting设计Hadoop的初衷,为了针对大规模的网页快速建立索引: 2)大数据存储:利用Hadoop ...
- activemq+Zookeper高可用集群方案配置
在高并发.对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案.从ActiveMQ 5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式 ...
- 【线程系列五】什么时候释放锁—wait()、notify()
由于等待一个锁定线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不需要锁的时候及时释放锁是很重要的.在以下情况下,持有锁的线程会释放锁: 1. 执行完同步代码块. 2. 在执行 ...
- SSM-SpringMVC-03:SpringMVC执行流程一张有意思的图
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上次的图也不全,这次的图也不是完整版,但是多了一个拦截器,我觉得挺有意思的,我就放上来了 他Handler ...
- SSM-MyBatis-03:Mybatis中简单的整合日志
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------简单的整合日志,首先提供俩种方式,log4j和logback简单的说一下logback,他由log4j的原作者编 ...
- open_basedir restriction in effect,解决php引入文件权限问题
一.前言 今天在Ubuntu安装了lnmp环境,运行项目的时候出现了,引入500的错误 二.查看错误 再项目文件入口添加,代码显示错误内容,查看到一下错误 ini_set('display_error ...
- MongoDB的安装启动及做成windows服务
直接上干货. 官网地址:https://www.mongodb.com/download-center?jmp=nav#community 点击图中链接进入所有版本的下载列表 我下载的是3.6.5版本 ...