vue传值(父子传值,非父子传值)
vue组件传值,分为父子传值和非父子传值,父子传值又分为父传子和子传父。
组件之间的传值,实现了数据的联动,是从操作Dom到操作数据一个跳转性的突破,在学习vue双向绑定原理之后,
这种观念就应该继续加强,可以大大提高应用开发的效率,方便用户使用,减轻数据库系统管理人员维护负担。
我们实现简单的组件传值,做了张思维导图,其实就是语法上我们还不熟悉,我们需要的就是打好基础,熟悉语法。
https://cn.vuejs.org/v2/guide/components-props.html是prop语法的介绍,老生常谈,官网语法很重要。

<template>
<div class="hello">
<div class="son1"> <!-- {{mes}}--{{num}} -->
父对com1说:{{mes}} <button @click="toFather">子传父</button>
<button @click="sendDataToCom2">send to com2</button>
com1收到com2的回答{{mes5}}
</div> </div>
</template> <script>
export default {
name: 'HelloWorld',
props: ["mes"],
// props: {
// mes:String,
// num:Number
// },
data () {
return {
mes1:"我是com1,没办法,我学不会呀",
mes2:"弟弟,我学不会",
mes5:""
}
},
created () {
this.spead.$on("to-com1",(value)=>{
console.log(value,"-----")
this.mes5=value
})
},
methods: {
toFather(){
this.$emit("to-father", this.mes1)//发送
},
sendDataToCom2(){
this.spead.$emit("to-com2",this.mes2)
}
} }
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.son1{background: pink}
</style>
*:这是Com代码,props注释部分,是prop的不同语法
<template>
<div class="hello">
<div class="son2">
com1对com2说:{{mes3}}
<button @click="sendDataToCom1">send to com1</button>
</div> </div>
</template> <script>
export default {
name: 'HelloWorld',
data () {
return {
mes3:"",
mes4:"那你吃屎吧"
}
},
created () {
this.spead.$on("to-com2",(value)=>{
console.log(value,"=======")
this.mes3=value
})
},
methods: {
sendDataToCom1(){
this.spead.$emit("to-com1",this.mes4)
}
} }
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.son2{background: rgb(213, 255, 220)}
</style>
*:这是Com2代码
<template>
<div class="hello"> <Com1 :mes="message" @to-father="Com1data"/>
<Com2/>
<div class="father">
com1对父说:{{fromCom1}}
</div> </div>
</template> <script> import Com1 from "./Com1"
import Com2 from "./Com2"
export default {
name: 'HelloWorld', data () {
return {
message:"给你大嘴巴子",
fromCom1:""
}
}, methods: {
Com1data(data){
this.fromCom1 = data
}
}, components: {//组件
Com1,
Com2
}
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped >
.father{
background: orange
}
</style>
*:父组件的代码,记得要引入组件com1和com2
自己点一点,效果就出来了!
总结:
父组件向子组件传值四部走:
1.子组件在props中创建一个属性,用以接收父组件传过来的值
2.父组件中注册子组件
3.在子组件标签中添加子组件在props中创建的属性
4.把需要传给子组件的属性赋值
子组件向父组件传值:
1.子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件
2.将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法
3.在父组件中注册子组件并在子组件标签上绑定对自定义事件的监听
子组件向子组件传值:与父亲类似,但是需要父亲充当一个桥梁,在main.js中加一句代码:
vue传值(父子传值,非父子传值)的更多相关文章
- vue bus方式解决非父子组件间的传值
对于非父子组件之间的传值 通常使用VUEX 和总线等方式解决 这里我聊聊发布订阅模式(总线) <body> <div class="app"> <ch ...
- Vue组件通信之非父子组件传值
前言: 如果想要了解非父子关系的组件传值,最好是在了解父传子和子传父的基础上在来了解非父子传值可能会有更透彻的思路. 因为非父子传值是通过定义事件总线来代理实现父传子+子传父从而实现的传值方式. 这是 ...
- vue.js 创建组件 子父通信 父子通信 非父子通信
1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- vue组件通信之非父子组件通信
什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit 触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on 监听当前实例上的自定义事件.事件可以 ...
- 【vue】父组件主动调用子组件 /// 非父子组件传值
一 父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...
- vue中父子组件之间的传值、非父子组件之间的传值
在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...
- vue 非父子组件传值
/*非父子组件传值 1.新建一个js文件 然后引入vue 实例化vue 最后暴露这个实例 2.在要广播的地方引入刚才定义的实例 3.通过 VueEmit.$emit('名称','数据') 4.在接收收 ...
- 组件基础(非父子组件传值)—Vue学习笔记
最近几天忙着写Api去了,抽空把后面的内容下出来,然后再分享给大家web可以使用的api. 上次说了父子组件直接的传值,这次看一下非父子组件之间的传值(总线机制) 要实现非父子组件之间的传值非常重要的 ...
- Vue兄弟组件(非父子组件)状态共享与传值
前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~ 内容里的<br> ...
- vue非父子关系之间通信传值
第一种方法: 通过给vue实例添加自定义属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
随机推荐
- JS 动态表格
表格 在script里面使用innerHTML获取标签体的内容,然后进行添加. 删除则是不断的获取父节点,利用父节点删除子节点. 在做这个的时候,要主要获取表格table的对象有两种方式,一是getE ...
- 【原生JS】进阶最后一个编程篇(与之前的选项卡不同的做法)
完成效果图: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- [转]Android自定义控件:进度条的四种实现方式(Progress Wheel的解析)
最近一直在学习自定义控件,搜了许多大牛们Blog里分享的小教程,也上GitHub找了一些类似的控件进行学习.发现读起来都不太好懂,就想写这么一篇东西作为学习笔记吧. 一.控件介绍: 进度条在App中非 ...
- 写一个js配合rem
rem.js 目前笔者解决移动端的尺寸带来的样式问题,都是通过viewport + rem的.viewport 相信大家都用过了,而rem需要用js动态设置html的字体大小. 动态设置rem的根字体 ...
- linux 自旋锁 API 简介
自旋锁原语要求的包含文件是 <linux/spinlock.h>. 一个实际的锁有类型 spinlock_t. 象任何其他数据结构, 一个 自旋锁必须初始化. 这个初始化可以在编译时完成, ...
- 纯CSS绘制的图形一览
整理网上一些使用纯CSS绘制的图形示例~~纯属抄袭,哈哈...仅仅是为了自己以后查看! Square(正方形) #square { width: 100px; height: 100px; backg ...
- C# 字典 Dictionary 的 TryGetValue 与先判断 ContainsKey 然后 Get 的性能对比
本文使用 benchmarkdotnet 测试字典的性能,在使用字典获取一个可能存在的值的时候可以使用两个不同的写法,于是本文分析两个写法的性能. 判断值存在,如果值存在就获取值,可以使用下面两个不同 ...
- GetDc函数与GetWindowDC函数的区别
GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境 GetWindowDC函数:返回hWnd参数所指定的窗口的设备环境. 获得的设备环境覆盖了整个窗口(包括非客户区),例如标题栏. ...
- dotnet 获取指定进程的输入命令行
本文告诉大家如何在 dotnet 获取指定的进程的命令行参数 很多的程序在启动的时候都需要传入参数,那么如何拿到这些程序传入的参数? 我找到两个方法,一个需要引用 C++ 库支持 x86 和 x64 ...
- 【矩阵乘法优化dp】[Codeforces 621E] Wet Shark and Blocks
http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test 2 seconds ...