vue组件父子通信

父传子通过属性
子传父通过方法

组件父传子(数据传递)

组件复用的时候会存在父传子

  1. 父组件在html结构上自定义属性
<!-- :表示动态绑定,这样里面的数据false就会按照js里的类型进行解析。被认定为boolean值-->
<navbar mytitle="电影" :myleft="false"></navbar>
  1. 子组件通过props选项接受需要父组件传递的属性。有三种写法
Vue.component("navbar",{
      //1-接受mytitle 属性
      // props:["mytitle","myleft"],
      //2-接受mytitle 属性,验证 属性值
      // props:{
      //   myleft:Boolean,
      //   mytitle:String
      // },
      //3-接受mytitle 属性,验证 属性值,默认值
      props:{
        mytitle:{
          type:Boolean,
          default:true
        },
        mytitle:{
          type:String,
          default:"11111"
        }
      },
      template:`
        <div style="background:red;color:white">          
          <button v-show="myleft">返回</button>
          <span>  {{mytitle}}  </span>  
        </div>
      `
    })

组件子传父(数据传递)

实现抽屉效果存在子传父
在这里插入图片描述

  1. 父组件在html结构上自定义事件
<!-- @后面的名字是自定义的,也可以是@wht.  是为了区分js原生的事件。 handleEvent需定义在父组件的methods里-->
<navbar @myevent="handleEvent"></navbar>
<sidebar v-show="isShow"></sidebar>
new Vue({
  el:"#box",
  data:{
    isShow:true
  },
  methods:{
    handleEvent(data){
      console.log(data) // 此处打印11111111. 为子组件传递过来的数据
      this.isShow= !this.isShow
    }
  }
})
  1. 子组件通过$emit触发父组件里自定义的事件(事件名字得对应上)
Vue.component("navbar",{
  template:`
    <div>
      <button @click="handleClick()">click</button>
      navbar-导航栏
      <button>click</button>
    </div>
  `,
  methods:{
    handleClick(){
      // console.log("navbar孩子,希望父组件能够将isShow 取反")
      //触发 navbar身上的监听事件。$emit方法两个参数。第一个参数:事件名称;第二个参数:数据
      this.$emit("myevent","11111111111111111")
    }
  }
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值