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. 深入java面向对象二:final关键字

    文章内容源于对<疯狂java讲义>及<疯狂Java:突破程序员基本功的16课>学习和总结. 一. final成员变量 final 修饰变量时,表示该变量一旦获取了值就不可以改变 ...

  2. Python--day30--网络基础

    单波: 查找mac:

  3. java 集合类 & 容器

    为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储 ...

  4. Java日志框架——JCL

    JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging". 一.JCL原理 1.基本原理 JC ...

  5. Roslyn NameSyntax 的 ToString 和 ToFullString 的区别

    本文告诉大家经常使用的 NameSyntax 拿到值的 ToString 和 ToFullString 方法的区别 从代码可以看到 NameSyntax 的 ToString 和 ToFullStri ...

  6. 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配

    浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches) spring security中的BCryptPass ...

  7. vue项目导入excel单列导入

    先安装 xlsx.js, 然后引入 import XLSX from 'xlsx'; 代码 <form> <span> <textarea name="cont ...

  8. C# 自动翻页 PPT 测试脚本

    本文告诉大家一个可以使用的 C# 脚本,可以用来自动打开 PPT 文件,然后不断执行翻页.每次翻页都截图.翻页之后自动关闭 PPT 再次打开 最近发现给 Office 做的插件,会在一定翻页次数的时候 ...

  9. dotnet 获取用户设备安装了哪些 .NET Framework 框架

    从注册表可以拿到当前用户安装的 .NET Framework 版本,本文告诉大家如何解析这些信息 在注册表的当前设备的 SOFTWARE\Microsoft\NET Framework Setup\N ...

  10. P3810 陌上花开 CDQ分治

    陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...