vue 多选框 checkbox 父到子传值
vue多选功能,
修改时选中的状态不能从当前组件中得到,从父组件中传过来。


这里 新增和修改封装了一个组件,在点击确定按钮后,会发送新增或修改请求,重新渲染页面。但是在点击【新增】/ 【修改】按钮时,不会发送请求,不会请求数据。所有的数据在页面进行渲染时即拿到(数据在父组件中)。即在点击修改按钮时,并不会请求数据,(所有数据在点击【确定】新增 / 修改 按钮成功后重新渲染页面时已经拿到)。想在修改的弹框里展示数据,需要将数据从父组件中传给子组件。
问题1 :
因为element-UI中对选框选中的值是name,没有id。而我们获取到选中的值后,是要将当前name的id传给后台。

解决:遍历数组,遍历选中的值,通过值(name) 对应 id
const that = this;
const departmentID = [];
this.department.forEach(function(v, i) { // 遍历数组
that.checkListValue.forEach(function(checked, index) { // 遍历选中的值
if (checked == v.name) {
departmentID.push(v.id); // 找到 id
that.dialog.data.departmentId = departmentID;
}
});
});
问题2 :
所有的数据都在父组件中的 【dialog】中,如下图


子组件中用到的数据都在 父组件传过来的 dialog中。使用时, 如下图

但是当多选框选中的值使用dialog的值时,如下图

在新增弹框中,选多选框时,选中一个会默认选中所有。(是因为新增时,多选框的值没有,使用父组件传来的值时,父组件传过来的是 null )。
后来新建一个数组,用来存选中的值,在点击确定新增时,直接把该值对应的id 赋值给【dialog】,如下图


因为所有的数据都是绑定的dialog的值,发送请求时,传dialog值即可。
这样解决了新增时选中一个即选中所有的问题,但是在修改弹框里 ,【checkListValue】为空数组。不能选中已有的数据。
即修改的弹框中多选框的值 只能用dialog的值。
因为在新增时,父组件传过来的是null,所以用v-if做判断。

在确定修改按钮时,将name对应的id赋值

其实不用 v-if 也能解决,而且更方便。
新增的弹框,多选框选中的值使用dialog的值时,选多选框时,选中一个会默认选中所有。(是因为新增时,父组件传过来的是 null )。
我只需把父组件传过来的值改成空数组 【】即可。这样子组件即可直接绑定 dialog的值。如下图:

vue 多选框 checkbox 父到子传值的更多相关文章
- EasyUI:combotree(树形下拉框)复选框选中父节点(子节点的状态也全部选中)输入框中只显示父节点的文本值
参考: https://blog.csdn.net/weixin_43236850/article/details/100320564
- js input复选框选中父级同时子级也选中
js实现复选框选中父级元素子级元素也选中,没有子级元素选中父级也不选中的效果 HTML <tr> <td> <label> <input name=" ...
- vue结合element-ui实现二级复选框checkbox
vue结合element-ui实现二级复选框checkbox 话不多说先上效果 交互:1.点击按钮全选,所有的checkbox全部选中:点击清空,所有的checkbox框都不选:点击确定获取选中的ch ...
- Vue复选框的全选
<!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- Android 单选按钮(RadioButton)和复选框(CheckBox)的使用
1.RadioButton (1)介绍 (2)单选按钮点击事件的用法 (3)RadioButton与RadioGroup配合使用实现单选题功能 (4)xml布局及使用 <?xml version ...
- css3美化复选框checkbox
两种美化效果如下图: 代码(html) <div id="main"> <h2 class="top_title">使用CSS3美化复 ...
- [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果
图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...
- 复选框(checkbox)、单选框(radiobox)的使用
复选框(checkbox).单选框(radiobox)的使用 复选框: HTML: // 复选框 <input type="checkbox" name="chec ...
- php 判断复选框checkbox是否被选中
php 判断复选框checkbox是否被选中 复选框checkbox在php表单提交中经常被使用到,本文章通过实例向大家介绍php如何判断复选框checkbox中的值是否被选中,需要的朋友可以参考 ...
随机推荐
- 【leetcode】654. Maximum Binary Tree
题目如下: Given an integer array with no duplicates. A maximum tree building on this array is defined as ...
- 【leetcode】976. Largest Perimeter Triangle
题目如下: Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero ...
- 【leetcode】923. 3Sum With Multiplicity
题目如下: Given an integer array A, and an integer target, return the number of tuples i, j, k such tha ...
- ActiveMQ消息中间件Producer和Consumer
ActiveMQ消息中间件Producer和Consumer 原创jethai2015-08-18 18:08:56评论(0)1480人阅读 生产者代码: 1 2 3 4 5 6 7 8 9 10 ...
- SQL Server 2014 各版本介绍
SQL Server 2014 各版本介绍 目前,SQL Server 2014 分为主要版本和专业版. 在选择版本的时候可以根据您具体的需要进行抉择,如果你需要一个免费的数据库管理系统,那么就选择 ...
- vue iframe嵌套单页面时打开新窗口并自定义浏览器标题
vue打开新窗口两种写法,效果一样: 第一种: router-link 传参用query或者params都可以,tagget和tag一定要加上才可以: 第二种: 直接写成a标签就可以了. 改变浏览器窗 ...
- BZOJ 3622: 已经没有什么好害怕的了(二项式反演)
传送门 解题思路 首先将\(a\),\(b\)排序,然后可以算出\(t(i)\),表示\(a(i)\)比多少个\(b(i)\)大,根据容斥套路,设\(f(k)\)表示恰好有\(k\)个\(a(i)\) ...
- 【Tomcat】使用Tomcat部署Spring Boot项目生成的jar包
介绍 简单来说,Tomcat是一个免费的,用于Java Web应用以及其它Web应用的一个Web服务器.(简单地概括一下,可能有误) 下载与安装 本文章目标是把Spring Boot Web项目生成的 ...
- leetcode中的一些二分搜索树
235(最近公共祖先) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left ...
- HTML5: HTML5 Video(视频)
ylbtech-HTML5: HTML5 Video(视频) 1.返回顶部 1. HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 ...