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.prototype.spead = new Vue()//非父子传值
 
博主:GGbondMan
链接:vue中文官网
 

vue传值(父子传值,非父子传值)的更多相关文章

  1. vue bus方式解决非父子组件间的传值

    对于非父子组件之间的传值 通常使用VUEX 和总线等方式解决 这里我聊聊发布订阅模式(总线) <body> <div class="app"> <ch ...

  2. Vue组件通信之非父子组件传值

    前言: 如果想要了解非父子关系的组件传值,最好是在了解父传子和子传父的基础上在来了解非父子传值可能会有更透彻的思路. 因为非父子传值是通过定义事件总线来代理实现父传子+子传父从而实现的传值方式. 这是 ...

  3. vue.js 创建组件 子父通信 父子通信 非父子通信

    1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  4. vue组件通信之非父子组件通信

    什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit  触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on  监听当前实例上的自定义事件.事件可以 ...

  5. 【vue】父组件主动调用子组件 /// 非父子组件传值

    一  父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...

  6. vue中父子组件之间的传值、非父子组件之间的传值

    在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...

  7. vue 非父子组件传值

    /*非父子组件传值 1.新建一个js文件 然后引入vue 实例化vue 最后暴露这个实例 2.在要广播的地方引入刚才定义的实例 3.通过 VueEmit.$emit('名称','数据') 4.在接收收 ...

  8. 组件基础(非父子组件传值)—Vue学习笔记

    最近几天忙着写Api去了,抽空把后面的内容下出来,然后再分享给大家web可以使用的api. 上次说了父子组件直接的传值,这次看一下非父子组件之间的传值(总线机制) 要实现非父子组件之间的传值非常重要的 ...

  9. Vue兄弟组件(非父子组件)状态共享与传值

      前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~  内容里的<br> ...

  10. vue非父子关系之间通信传值

    第一种方法: 通过给vue实例添加自定义属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...

随机推荐

  1. CondaHTTPError: HTTP 000 CONNECTION FAILED

    [root@localhost ~]# conda install samtools Solving environment: failed CondaHTTPError: HTTP 000 CONN ...

  2. poj 1271 && uva 10117 Nice Milk (半平面交)

    uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...

  3. Vue 组件中的data数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. LCA (最近公共祖先)倍增做法 —— O(nlogn)预处理 O(logn)(在线)查询

    pa[a][j] 表示 a 结点的 2^j倍祖先(j = 0时 为直接父亲,j = 1时为父亲的父亲……) 1.首先预处理出所有结点的深度值dep和父亲结点 void dfs(int u, int f ...

  5. C# 在 构造函数添加 CallerMemberName 会怎样

    在 C# 中有一个特性 CallerMemberName 可以给方法知道调用这个方法的方法名,在 UWP 中用这个特性很多,特别是在使用 MVVM 绑定 如果在构造函数使用这个特性会发生什么? 构造函 ...

  6. H3C IP地址与子网掩码

  7. java.util.Date和jdk1.8新时间API比拼

    旧的时间和日期的API的缺陷 Java 的 java.util.Date 和 java.util.Calendar 类易用性差,不支持时区,而且都不是线程安全的. Date如果不格式化,打印出的日期可 ...

  8. Spring、Spring Boot和TestNG测试指南 - 使用Spring Boot Testing工具

    Github地址 前面一个部分讲解了如何使用Spring Testing工具来测试Spring项目,现在我们讲解如何使用Spring Boot Testing工具来测试Spring Boot项目. 在 ...

  9. 基于bmob后端云小程序开发——口袋吉他

    人的一生90%的时间都在做着无聊的事情,社会的发展使得我们的闲暇时间越来越多,我们把除了工作的其他时间放在各种娱乐活动上. 程序员有点特殊,他们把敲代码看成娱乐活动的一部分,以此打发时间的不占少数.这 ...

  10. Team Foundation Server 2015使用教程【5】:默认团队checkin权限修改