Vue中父组件使用子组件的emit事件,获取emit事件传出的值并添加父组件额外的参数进行操作

需求是这样的,需要输入这样一个列表的数据,可以手动添加行,每一行中客户编号跟客户姓名是自动关联的,就是说选取了客户姓名之后,客户编号是自动填充的,客户姓名是一个独立的组件,每一个下拉项都是一个大的对象,里面包含客户的所有信息,通过下拉列表可以获取客户姓名,但是一旦选取之后,客户姓名这个字段就固定了,即为客户的id,所以想通过<template slot-scope="scope">{{scope.row.XXX}}</template>这种方式是拿不到的,然后想通过value-key的形式呢,发现这个已经封装好的组件中还不支持折中value-key的方式,只有下拉列表选择发生变化时,触发change事件,this.$emit('select', item),那么在父组件中通过接收事件,就可以获取item,是这样的:
但是问题来了,由于table有多行,如何知道事件发生在哪一行,然后修改对应的行的客户编号呢?我们知道table中可以传入scope.$index,来标记行,然后修改table的data[index].patientCode就可以了,但是问题就在于如果直接将$index放进函数,@select="selectPatient($index,item)"或是这样@select="selectPatient(item,$index)",你会发现都不好使,都会影响子组件向外传递他的item值,
那么有没有方法,既不影响子组件向外传递的值,又可以在函数中添加自己的额外参数呢,经过一番查找,发现是可以的,可以这样写@select="selectPatient($event, $index)",然后在处理函数中第一个参数就是子组件传出的item的对象值,第二个就是index标识。
目的达到了,需求也完成了,那么我们不禁要问,这个$event究竟是个什么东东呢?
去官网查找,找到了这样一个例子:



/*************2018-12-03**************/
到这里本以为结束了,发现一个问题,如果子组件想传多个参数出来,比如$emit("change", arg1,arg2,...),使用$event是否依然可以代表子组件传出来的值?经过测试,发现如果如父组件中依然使用@select="selectPatient($event, $index)"这样的写法,发现$event只代表第一个参数arg1,所以这样的话,可以能子组件就要改变写法了,把所有参数包装成一个对象,$event就可以传过来了。
Vue中父组件使用子组件的emit事件,获取emit事件传出的值并添加父组件额外的参数进行操作的更多相关文章
- layui获取子集表单中的值,关闭父级弹窗
js代码 var GetParams = function(url,bool) { try { if(bool){ var index = url.indexOf('?'); url = url.ma ...
- vue中eventbus被多次触发(vue中使用eventbus踩过的坑)【bus.$on事件被多次绑定】
问题描述:只要页面没有强制刷新,存在组件切换,bus.$on方法会被多次绑定,造成事件多次触发 触发bus.$on中绑定的方法.png bus.$on多次绑定.png 解决办法:在每次调用方法 ...
- layer父界面调用子弹窗的方法和获取子弹窗的元素值总结
layer.open({ type: 2 ,title: false //不显示标题栏 ,closeBtn: false ,area: ['460px', '45%'] ,shade: 0.5 ,id ...
- vue中使用watch函数,当数据改变时自动引发事件
本来我的需求是这样的,使用ElementUI的日期选择器,当日期选择器被更改时需要根据新日期来向服务器获取新数据,但是发现这个日期选择器没有change事件,后来终于发现vue有个watch函数就是用 ...
- vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)
看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...
- vue-父组件向子组件传值
一.父组件向子组件传值 其实该问题是说子组件如何访问父组件的属性和方法?那么根据对组件化的理解,无非就是要解决两个问题: 1.父组件如何将值传给子组件? 2.子组件如何获取父组件传递过来的值? 解读v ...
- artdialog4.1.7 中父页面给子页面传值
artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...
- 基于iscroll的better-scroll在vue中的使用
什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强 ...
- better-scroll在vue中的坑
在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示: 可以打开“微信 —> 钱包—>滴滴出 ...
随机推荐
- Kaggle-SQL(1)
Getting-started-with-sql-and-bigquery 教程 结构化查询语言(SQL)是数据库使用的编程语言,它是任何数据科学家的一项重要技能. 在本课程中,您将使用BigQuer ...
- Catalina 默认使用zsh了,你可习惯
zsh 成为默认 shell 淘汰掉我的旧MBP换新后,欢天喜地打开Terminal,感觉有点不对,提示符什么时候变成了 %. 查询了一些资料发现,原来在2019年WWDC期间,苹果推出了macOS ...
- System.out.println()相关源码
System.out.println是一个Java语句,一般情况下是将传递的参数,打印到控制台. System:是 java.lang包中的一个final类.根据javadoc,“java.lang. ...
- JS 与 jQery 的区别主要在于 DOM
//目前正在学习前端阶段,把知识点整理.保存下来以便日后查看 首先引入jQery: 需要先引入css,再引入js: jQery需要在js前引入,再引入框架,最后才是js的引入:css也相同,先引入框架 ...
- effectivejava(破坏单例)
以下代码是最普通的双重锁的单例实现形式 package com.edu.character02; import java.io.Serializable; /** * <p> * 双重锁 ...
- 一、Spring的基本应用
1.spring导包 导入maven包 <dependencies> <dependency> <groupId>org.springframework</g ...
- win10 + Ubuntu 20.04 LTS 双系统 引导界面美化
版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...
- 【luogu1709】小B的询问 - 莫队
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- 上手了RabbitMQ?再来看看它的交换机(Exchange)吧
人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第三弹. RabbitMQ的入门和RabbitMQ+SpringBoot的整合可以点此链接进去回顾,今天要 ...
- SuperSlide轮播切换
<!-- 点击切换引入 --> <script type="text/javascript" src="js/jquery.js">&l ...