Vue--子组件互相传值,子组件来回传值,传值反复横跳
Vue--子组件传值,子组件来回传值,子组件传值反复横跳
我不不仅要子组件之间直接传值,我还要传过去再传回来,传回来再传过去,子组件直接反复横跳
解决问题
- 给组件传值,并不知道改值的校验结果
- 同一个组件,在不同的引用中校验方式完全不一样,需要将校验方式放到组件外面的情况
单项发送
- 子组件一发送参数
send1() {
this.pVue.$emit('send1', {
code: this.code
})
},
- 子组件二接收参数
this.pVue.$on('send1', data => {
this.code1 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
this.pVue.boo = true
})
发送并接收回参
子组件一发送,子组件二接收,进行逻辑处理后返回组件一
- 子组件一
send2() {
this.pVue.$emit('send2', {
code: this.code
}, (data) => {
console.log(`按钮组件 => 接收回传 ${data.code}`)
})
},
- 子组件二
this.pVue.$on('send2', (data, cb) => {
this.code2 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
// 个人逻辑... 然后返回参数
cb({
code: data.code
})
})
发送并接收会参并根据会参再发送
- 子组件一
send3() {
this.pVue.$emit('send3', {
code: this.code
}, (data, cb) => {
console.log(`按钮组件 => 接收回传 ${data.code}`)
cb({
code: data.code
})
})
}
- 子组件二
this.pVue.$on('send3', (data, cb) => {
this.code3 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
// 个人逻辑... 然后返回参数
cb({
code: data.code
}, () => {
this.code4 = data.code
console.log(`表格组件 => 再次接收参数 ${data.code}`)
})
})
所有代码
- 父组件
<template>
<div class="home">
<button-list :p-vue="pVue" />
<div style="height: 20px" />
<table-list :p-vue="pVue" />
</div>
</template>
<script>
import Vue from 'vue'
import ButtonList from './components/button-list'
import TableList from './components/table-list'
export default {
name: 'Home',
data() {
return {
pVue: new Vue()
}
},
components: {
ButtonList,
TableList
}
}
</script>
<style lang="scss" scoped>
.home {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
</style>
- 子组件一
<template>
<div>
<el-input v-model="code" placeholder="过程在控制台" />
<el-row style="margin-top: 20px">
<el-button :disabled="code ===''" type="primary" @click="send1()">单项发送</el-button>
<el-button :disabled="code ===''" type="primary" @click="send2()">发送并接收回传</el-button>
<el-button :disabled="code ===''" type="primary" @click="send3()">发送接收并再发送</el-button>
</el-row>
</div>
</template>
<script>
export default {
data() {
return {
code: ''
}
},
props: {
pVue: {
type: Object
}
},
methods: {
/**
* 单项发送
*/
send1() {
this.pVue.$emit('send1', {
code: this.code
})
},
/**
* 发送并接收回调
*/
send2() {
this.pVue.$emit('send2', {
code: this.code
}, (data) => {
console.log(`按钮组件 => 接收回传 ${data.code}`)
})
},
/**
* 发送接收并再发送
*/
send3() {
this.pVue.$emit('send3', {
code: this.code
}, (data, cb) => {
console.log(`按钮组件 => 接收回传 ${data.code}`)
cb({
code: data.code
})
})
}
}
}
</script>
- 子组件二
<template>
<el-form label-width="80px">
<el-form-item label="参数1">
<el-input disabled v-model="code1"></el-input>
</el-form-item>
<el-form-item label="参数2">
<el-input disabled v-model="code2"></el-input>
</el-form-item>
<el-form-item label="参数3">
<el-input disabled v-model="code3"></el-input>
</el-form-item>
<el-form-item label="参数4">
<el-input disabled v-model="code4"></el-input>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
code1: '',
code2: '',
code3: '',
code4: ''
}
},
props: {
pVue: {
type: Object
}
},
watch: {
code1(newVal, oldVal) {
console.log(oldVal)
console.log(newVal)
}
},
mounted() {
if (this.pVue) {
/**
* 单项接收
*/
this.pVue.$on('send1', data => {
this.code1 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
this.pVue.boo = true
})
/**
* 发送并接收回调
*/
this.pVue.$on('send2', (data, cb) => {
this.code2 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
// 个人逻辑... 然后返回参数
cb({
code: data.code
})
})
/**
* 发送接收并再发送
*/
this.pVue.$on('send3', (data, cb) => {
this.code3 = data.code
console.log(`表格组件 => 接收参数 ${data.code}`)
// 个人逻辑... 然后返回参数
cb({
code: data.code
}, () => {
this.code4 = data.code
console.log(`表格组件 => 再次接收参数 ${data.code}`)
})
})
}
}
}
</script>
2020年12月12日
Vue--子组件互相传值,子组件来回传值,传值反复横跳的更多相关文章
- 【vue】父组件主动调用子组件 /// 非父子组件传值
一 父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...
- vue中子组件的拆分 父组件与子组件之间的传值
vue是组件式开发,尽量独立出子组件 prop():父组件传值给子组件 $emit():子组件传值给父组件 子组件中的设置: 使用bind <template> : default-che ...
- EasyDSS RTMP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值
之前接触最多的都是EasyNVR,主要针对的都是前端的一些问题.也有接触到一些easydss流媒体服务器. 前端方面的,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是 ...
- Vue父子,子父,非父子组件之间传值
Vue组件基础 纯属随笔记录,具体详细教程,请查阅vue.js网站 子组件给父组件传值: <body> <div id="app"> <my-app& ...
- vue父组件调用子组件方法、父组件向子组件传值、子组件向父组件传值
一.父组件调用子组件方法 父组件代码 parent.vue <template> <div> <button @click="parentFun" ...
- vue之provide和inject跨组件传递属性值失败(父组件向子组件传值的两种方式)
简单介绍:当一个子组件需要用到父组件的父组件的某些参数.那么这个时候为了避免组件重复传参,使用vue的依赖注入是个不错的方法,直接在最外层组件设置一个provide,内部不管多少嵌套都可以直接取到最外 ...
- vue子组件如何向父组件传值
子组件: <template> <div class="app"> <input @click="sendMsg" type=&q ...
- vue 父到子动态传值 子组件实时渲染
近期项目中需要一个功能,根据选择不同的 团队片区 id 展示不同的数据,团队id 在父组件 数据在子组件中展示. 根据不同的团队 动态渲染数据总览. 父组件: <Cards ref=" ...
- vue组件之间的通信以及如何在父组件中调用子组件的方法和属性
在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...
随机推荐
- 查看ceph集群被哪些客户端连接
前言 我们在使用集群的时候,一般来说比较关注的是后台的集群的状态,但是在做一些更人性化的管理功能的时候,就需要考虑到更多的细节 本篇就是其中的一个点,查询ceph被哪些客户端连接了 实践 从接口上来说 ...
- MYSQL学习(三) --索引详解
创建高性能索引 (一)索引简介 索引的定义 索引,在数据结构的查找那部分知识中有专门的定义.就是把关键字和它对应的记录关联起来的过程.索引由若干个索引项组成.每个索引项至少包含两部分内容.关键字和关键 ...
- scrapy学习之爬虫练习平台35
前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...
- CorelDRAW 条形码改不了字体如何解决?
看到有朋友提问说CorelDRAW条码生成设置里面的字体不能更改,是灰色的,不能选择.这个默认字体怎么改? 出现问题:条码生成设置里面的字体不能更改,是灰色的,不能选择. 解决方法一:找到C盘字体文件 ...
- web文件上传漏洞
什么是文件上传漏洞? 指利用系统的对文件上传部分的控制不足或处理缺陷,上传可执行的动态脚本文件/webShell进行攻击行为. 原因 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的 ...
- 牛客练习赛69 火柴排队 题解(dp)
题目链接 题目大意 给你一个长为n(n<=5e3)的数组a.随机使得k个元素增加d.要你求多大的概率使得,这些数组元素的相对大小不发生改变 输出 n 行每行一个整数,第 i 行的整数表示 k=i ...
- 蓝桥杯——测试次数·摔手机(2018JavaB组第4题,17分)
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通. x ...
- 记一次Ddos遭遇
万年不用的vps最近借朋友用了几天,今天突然跟我说连不上了 上服务器先暴力重启一波 还是不行,netstat一看 端口的连接状态是这个样子: 估计连接被打满了,遂换了个端口 重启之 问题解决
- win10下安装anaconda3+tensorflow
安装了三天终于安装成功了,今天简单写下自己的安装步骤 1.下载可以在Anaconda3官网下载:https://www.anaconda.com/products/individual 也可以通过清华 ...
- 二、pandas学习
1.food.csv ========================================================================================= ...