[前端开发]Vue父子组件的通信及访问
父传子 props
子传父 自定义事件emit
props传数组
props:['cmovies','cmessage']
props传对象
props:{
//1.类型限制
cmovies:Array,
cmessage:String
//2.提供一些默认值
cmessage:{
type:String,
default:'你好啊', //默认值
required: true //设置为必传值(cmessage)
}
cmovies:{
type:Array,
default(){
return []
}
}//当类型为数组时,default 返回的也是数组[]
cinfo:{
type:Object,
default(){
return {}
}
}//当类型为对象时,返回的也是对象{}
}
vue实例
<div id="app">
<cpn :cmovies="movies" :cmessage="message"></cpn>
</div>
用v-bind来绑定子组件和父组件中的数据,调用的时候用子组件的
模板cpn
<template id="cpn">
<div>
<ul>
<li v-for="item in cmovies">{{item}}</li>
</ul>
{{cmessage}}
</div>
</template>
cpn组件
const cpn = {
template: '#cpn',
props:['cmovies','cmessage'],
data(){
return{}
}
}
为子组件设置两个props(属性),在使用时可以用v-bind绑定数据
new vue
var vm = new Vue({
el: '#app',
data: {
message:'你好啊',
movies:['加勒比海盗','海贼王','海王','海尔兄弟']
},
methods: {},
components:{
cpn
}
});
父子传值 props驼峰标识
为什么不用cInfo而用cinfo呢
v-bind不支持驼峰
childMyMessage要写成child-my-message
子传父
当子传父时,就需要自定义事件了
v-on来监听dom事件,也可用于组件之间的自定义事件
流程
在子组件中,通过 $emit() 来触发事件,在父组件中,用v-on来监听事件

//父组件
<div id="app">//用v-on来监听事件
<cpn @item-click="cpnClick"></cpn>
</div>
//子组件
<template id="cpn">
<div>
<button v-for="item in categories" @click="btnClick(item)">
{{item.name}}</button>
</div>
</template>
//cpn子组件
const cpn = {
template:'#cpn',
data(){
return{
categories: [
{ id: 'aaa', name: '热门推荐' },
{ id: 'bbb', name: '手机数码' },
{ id: 'ccc', name: '家用家电' },
{ id: 'ddd', name: '电脑办公' },
]
}
},
methods:{
btnClick(item){
//子组件发射了一个自定义事件
this.$emit('item-click',item)
}
},
}
//new vue
var vm = new Vue({
el: '#app',
data: {
message: '你好啊'
},
methods: {
cpnClick(item){
console.log('cpnClick',item)
}
},
components: {
cpn
}
});
父访问子$children $refs
- $children
cpn: {
template: '#cpn',
data(){
return{
name:'黄开然'
}
},
methods: {
showMessage() {
console.log('showMessage')
}
}
}
}
如何在父组件中调用showMessage()?
<div id="app">
<cpn></cpn>
<button @click="btnClick">button</button>
</div>
var vm = new Vue({
el: '#app',
data: {},
methods: {
btnClick() {
console.log(this.$children)
for(let c of this.$children){
console.log(c.name)
c.showMessage()
}
}
}
- refs
默认是个空的对象
一个类似id的标识
使用:
<cpn ref="aaa"></cpn>
methods: {
btnClick() {
console.log(this.$refs.aaa.name)
}
},
子访问父 $parent $root
不常用
[前端开发]Vue父子组件的通信及访问的更多相关文章
- vue父子组件的通信
一.父组件向子组件传递数据 1.首先形成父子组件关系 <!DOCTYPE html> <html lang="en"> <head> <m ...
- vue:父子组件间通信,父组件调用子组件方法进行校验子组件的表单
参考: ElementUI多个子组件表单的校验管理:https://www.jianshu.com/p/541d8b18cf95 Vue 子组件调用父组件方法总结:https://juejin.im/ ...
- VUE 父子组件之间通信传值 props和 $emit
1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件 <div id="app" > <tr ...
- Vue父子组件之间通信
1.父 -> 子.通过props //father.vue <template> <div id="father"> <div><l ...
- vue 父子组件通信详解
这是一篇详细讲解vue父子组件之间通信的文章,初始学习vue的时候,总是搞不清楚几个情况 通过props在父子组件传值时,v-bind:data="data",props接收的到底 ...
- Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...
- vue父子组件通信
一.父子组件间通信 vue.js 2.0提供了一个ref 的属性: 可以为子组件指定一个索引id 父组件: <template> <div id='user-login'> & ...
- 【Vue课堂】Vue.js 父子组件之间通信的十种方式
这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...
- Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题
1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法 父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...
随机推荐
- Luogu1681_ 最大正方形II
题目背景 忙完了学校的事,v神终于可以做他的"正事":陪女朋友散步.一天,他和女朋友走着走着,不知不觉就来到了一个千里无烟的地方.v神正要往回走,如发现了一块牌子,牌子上有有一行小 ...
- 几种 npm install XXX 的区别
在使用npm命令安装资源包时,有哪些需要注意的区别 npm install X 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不 ...
- 【年度开源、工具合集】牛津计划,DMTK,Graph Engine…提高你的工作效率!
本篇合集包括以下三个部分的内容: 1.微软亚洲研究院过去一年的所有开源合集,如分布式机器学习工具包DMTK等. 2.利用微软研究院的技术提高工作效率的工具合集,如让没有机器学习背景的开发人员也能开发出 ...
- Windows下python3登陆和操作linux服务器
一.环境准备 python3远程连接需要用到pycrytodome和paramiko库,其中后者依赖前者,所以按照顺序来安装 1. 安装pycrytodome 1 pip install pycryt ...
- SpringBoot快速上手系列01:入门
1.环境准备 1.1.Maven安装配置 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. 下载Maven可执行文件 cd /usr/local ...
- C++与引用1
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- Context与ApplicationContext的区别
ApplicationContext并没有这个类,其实更应该叫做:Activity与Application在作为Context时的区别.嗯,的确是这样的,大家在需要Context的时候,如果是在Act ...
- SDWebImage -- 封装 (网络状态检测,是否打开手机网络下下载高清图设置)
对SDWebImage 进行封装,为了更好的节省用户手机流量,并保证在移动网络下也展示高清图,对使用SDWebImage 下载图片之前进行逻辑处理,根据本地缓存中是否有缓存原始的图片,用户是否打开移动 ...
- Spring常见注解
@Autowired @Resource @Component:类加上@Component注解,即表明此类是bean @Aspect 注解表示这是一个切面 @Around(value = " ...
- 手把手教你轻松使用数据可视化BI软件创建某疾病监控数据大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以某疾病监控数据大屏为例为 ...