原生小程序 之 父子组件的三种通信

原生小程序 之 父子组件的三种通信

父传子

父亲
<!--pages/info/info.wxml-->
<view>
  <test num="{{num}}"></test>
</view>
// pages/info/info.js
Page({
  data: {
    num:1
  },
})
{
  "usingComponents": {
    "test":"/component/test/test"
  }
}<!--component/test/test.wxml-->
<view>
  <view> 子组件 - {{ num }} </view>
</view>

  // component/test/test.js
  Component({
    properties: {
      num:Number
    },
    data: {
    },
    methods: {
    },
  })

  • 效果
    在这里插入图片描述

子传父

父亲
<!--pages/info/info.wxml-->
<view>
  <test num="{{num}}" bind:changeNum="changeNum"></test>
</view>
// pages/info/info.js
Page({
  data: {
    num:1
  },
  changeNum(e){
    // console.log("changeNum",e.detail);
    this.setData({
      num:e.detail
    })
  }
})
{
  "usingComponents": {
    "test":"/component/test/test"
  }
}<!--component/test/test.wxml-->
<view>
  <view > 子组件 - {{ num }} </view>
  <button bindtap="changeNum">num+1</button>
</view>
  // component/test/test.js
  Component({
    properties: {
      num:Number
    },
    data: {
    },
    methods: {
      changeNum(){
        this.triggerEvent("changeNum",this.data.num + 1)
      }
    },
  })

  • 效果
    在这里插入图片描述

父组件 拿子组件的 节点(实力对象,可调用实例对象的方法何数据)

  • 使用id 或者 class
父亲
<!--pages/info/info.wxml-->
<view>
  <test id="sonTestID"></test>
  <button bindtap="changeSonShow">修改子组件的 显示隐藏</button>
</view>
// pages/info/info.js
Page({
  data: {
  },
  changeSonShow(){
    this.selectComponent("#sonTestID").setFlag();
  }
})
{
  "usingComponents": {
    "test":"/component/test/test"
  }
}<!--component/test/test.wxml-->
<view>
  <view wx:if="{{flag}}"> 我是 flag为true显示 - {{ flag }} </view>
  <view wx:else> 我是 flag为flase显示 - {{ flag }} </view>
</view>
  // component/test/test.js
  Component({
    properties: {
    },
    data: {
      flag:true
    },
    methods: {
      setFlag(){
        this.setData({
          flag: !this.data.flag
        })
      },
    },
  })

  • 效果
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值