父传子 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父子组件的通信及访问的更多相关文章

  1. vue父子组件的通信

    一.父组件向子组件传递数据 1.首先形成父子组件关系 <!DOCTYPE html> <html lang="en"> <head> <m ...

  2. vue:父子组件间通信,父组件调用子组件方法进行校验子组件的表单

    参考: ElementUI多个子组件表单的校验管理:https://www.jianshu.com/p/541d8b18cf95 Vue 子组件调用父组件方法总结:https://juejin.im/ ...

  3. VUE 父子组件之间通信传值 props和 $emit

    1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件          <div id="app" >               <tr ...

  4. Vue父子组件之间通信

    1.父 -> 子.通过props //father.vue <template> <div id="father"> <div><l ...

  5. vue 父子组件通信详解

    这是一篇详细讲解vue父子组件之间通信的文章,初始学习vue的时候,总是搞不清楚几个情况 通过props在父子组件传值时,v-bind:data="data",props接收的到底 ...

  6. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

  7. vue父子组件通信

    一.父子组件间通信 vue.js 2.0提供了一个ref 的属性: 可以为子组件指定一个索引id 父组件: <template> <div id='user-login'> & ...

  8. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  9. Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题

    1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法    父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...

随机推荐

  1. 使用内网映射工具Holer将本地的Web应用映射到公网上访问

    Holer exposes local servers behind NATs and firewalls to the public internet over secure tunnels. Su ...

  2. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  3. lsync+rsync 实时同步(ubuntu16.04系统)

    1.同步端需要安装 lsync/rsyncapt-get install lsyncd rsync2.生成ssh公钥,粘贴到目标机器里面3.创建配置文件mkdir /etc/lsyncdcat /et ...

  4. Spring源码分析-BeanFactoryPostProcessors 应用之 PropertyPlaceholderConfigurer

    BeanFactoryPostProcessors 介绍 BeanFactoryPostProcessors完整定义: /** * Allows for custom modification of ...

  5. 4——PHP比较&&复制运算符

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. JDBC阶段总结

    一.JDBC的概念:Java DataBase Connectivity用Java语言操作数据库(通过SQL)二.数据库的驱动和JDBC的关系三.编写JDBC的步骤: a.注册驱动 b.建立与数据库的 ...

  7. Java并发ReentrantLock

    ReentrantLock简介 可重入锁,作用是使线程安全.对比于sychronized,它能具有以下特点 减小资源锁的力度 更可控,减少发生死锁的概率 加锁.释放锁都是显示控制的 添加锁的作用时间来 ...

  8. vue中的自定义分页插件组件

    介绍一下,已经有很多的vue分页的组件了,大家都是大同小易,那么我就结合自身的使用,写出了一片文章 首先在新建一个分页模块 在模块中引入相应的代码,(内有详细的注释) template中 <di ...

  9. CSS+DIV自适应布局

    CSS+DIV自适应布局 1.两列布局(左右两侧,左侧固定宽度200px;右侧自适应占满) 代码如下: <!doctype html> <html> <head> ...

  10. Apache Druid 的集群设计与工作流程

    导读:本文将描述 Apache Druid 的基本集群架构,说明架构中各进程的作用.并从数据写入和数据查询两个角度来说明 Druid 架构的工作流程. 关注公众号 MageByte,设置星标点「在看」 ...