快应用组件通信

1.父组件给子组件传值(props)

props

父组件

<import name="son" src="./son"></import>

<template>
  <div class="father">
    <text>父组件</text>
    <son say="{{say}}" prop-object="{{obj}}"></son>
  </div>
</template>

<script>
  export default {
    data(){
        return {
          say:'hello'
          obj:{
            name:'child-demo'
          }
        }
    }
  }
</script>

子组件

<template>
  <div class="son">
    <text>子组件</text>
    <text>{{ say }}</text>
    <text>{{ propObject.name }}</text>
  </div>
</template>

<script>
  export default {
    props: ['say', 'propObject'],
    onInit() {
      console.log('父组件传过来的值:', this.say, this.propObject)
    }
  }
</script>

2.子组件给父组件传值(emit, dispath, on)

emit

子组件

<template>
    <div class="son">
      <text>子组件</text>
      <text onclick="son">点击子组件</text>
    </div>
</template>

<script>
export default {
    data: {
    },
    son() {
        this.$emit('son')
    }
}
</script>

父组件

<import name="son" src="./son.ux"></import>

<template>
    <div class="father">
      <text>父组件</text>
      <son onson="fatherFunc"></son>
    </div>
</template>

<script>
export default {
    data: {
    },
    fatherFunc() {
       console.log('父组件方法:子组件被点击')
    }
}
</script>

dispath

子组件

<template>
    <div class="son">
      <text onclick='delHandler'>子组件age:{{compAge}}</text>
    </div>
</template>

<script>
export default {
    data(){
        return{
            compAge:9
        }
    },
    delHandler(){
        this.$dispatch('dispatchEvt',{
            num:this.compNum
        })
    },
}
</script>

父组件


<import name="son" src="./son.ux"></import>

<template>
    <div class="father">
      <text>父组件num:{{num}}</text>
      <son num="{{num}}"></son>
    </div>
</template>

<script>
export default {
    data() {
        return {
            num:20,
        }
    },
    onInit(){
      this.$on('dispatchEvt',this.dispatchEvt)
    },
    dispatchEvt(evt){
        this.num = evt.detail.num
    },
}
</script>

on

子组件

<import name="son" src="./son.ux"></import>

<template>
    <div class="son">
      <text>我是子组件age:{{compAge}}</text>
    </div>
</template>

<script>
export default {
    data(){
        return{
            compAge:null
        }
    },
    onInit(){
        this.$on('broadevt',this.broadevt)
    },

    broadevt(evt){
        this.compAge = evt.detail.age
    }
}
</script>

父组件

<import name="son" src="./son.ux"></import>

<template>
    <div class="father">
      <text onclick="evtTypeEmit">父组件age:{{age}}------触发$broadcast()函数</text>
      <son></son>
    </div>
</template>

<script>
export default {
    data() {
        return {
            age:18,
        }
    },
    evtTypeEmit(){
       this.$broadcast('broadevt',{
         age:19
       })
    },
}
</script>

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值