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数组冒泡排序
文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...
- C#的循环语句(四)
一.while 循环(1).while 其实是for循环的变形写法for(int i = 1; i<=5;i++) {循环体:} 上面的for循环可以写成int i= 1:for(;i< ...
- Linux 查看iptables状态-重启
iptables 所在目录 : /etc/sysconfig/iptables # service iptables status #查看iptables状态 # service iptables r ...
- servicemix-4.5.3 启动日志
karaf@root> log:display 2015-01-12 10:48:03,950 | WARN | rint Extender: 3 | XBeanNamespaceHandle ...
- 【js】react-native Could not find iPhone 6 simulator 和 Entry, ":CFBundleIdentifier", Does Not Exist 两种报错解决办法
一.在运行rn app应用时,react-native run:ios 报错出现 Could not find iPhone 6 simulator 解决办法: 1.react-native r ...
- tensorflow在文本处理中的使用——辅助函数
代码来源于:tensorflow机器学习实战指南(曾益强 译,2017年9月)——第七章:自然语言处理 代码地址:https://github.com/nfmcclure/tensorflow-coo ...
- C# 任务并行
. List<int> ids = new List<int>(); ; i < ; i++) { ids.Add(i); } ;//最大并行数量 List<Tas ...
- 手把手教你用ngrx管理Angular状态
本文将与你一起探讨如何用不可变数据储存的方式进行Angular应用的状态管理 :ngrx/store——Angular的响应式Redux.本文将会完成一个小型简单的Angular应用,最终代码可以在这 ...
- UE4 学习
1.官方文档:https://docs.unrealengine.com/en-US/index.html 2.入门教程: (1)C++ 程序员如何入门 UE 4:https://blog.csdn. ...
- linux 如何查找命令的路径(which搜索系统命令,whichis搜索文件)
http://hi.baidu.com/longredhao/item/911356ea2d8bed3687d9deed linux 下,我们常使用 cd ,grep,vi 等命令,有时候我们要查到这 ...