微信小程序--27(自定义组件4)

一、父子组件之间通信的3种方式

1、属性绑定

用于父组件向子组件的只当属性设置数据,但只能设置JSON兼容的数据

2、事件绑定

用于子组件向父组件传递数据,可以传递任意数据

3、获取组件实例

父组件还可以通过this.select Component()获取子组件的实例对象,这可直接访问子组件的任意数据和方法

二、属性绑定

属性绑定用于实现父向子传值,而且只能传递普通类型的数据,无法将方法传递给子组件

示例:

1、先创建一个组件test5,在component文件目录下

2、在wxml文件中进行属性绑定

复制代码
home.wxml文件中,父组件的中count值
<test5 count="{{count}}"></test5>
<view>父组件中,count的值是:{{count}}</view>

//test5.js文件中,指定count的类型
properties:{

count:Number
}

test5.wxml文件中count的值,并实现子组件count值自增

<view>子组件中count的值是:{{count}}</view>
<button bindtap="addcount">+1</button>

test.js文件中,实现自增
methods:{

addcount(){

this.setData({

count:this.properties.count+1
})
}

}

会发现count自增并没有同步到父组件当中,这里我们要用到事件绑定事件。

三、事件绑定

用于子组件向父组件传递数据,可以传递任意数据。

使用步骤如下:

  1. 在父组件的js中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件
复制代码
   //home.js文件中

   syncCount(e){

   console.log(e)
   })
  1. 在父组件的wxml中,通过自定义时间的形式,将步骤1定义的函数引用,传递给子组件
复制代码
   home.wxml文件中,父组件的中count值
   <test5 count="{{count}}"  bind:sync="syncCount"></test5>
   <view>父组件中,count的值是:{{count}}</view>
  1. 在子组件的js文件中,调用this.triggerEvent('自定义事件的名称',{/*参数对象*/}),将数据发送到父组件
复制代码
   test.js文件中,实现自增,触发自定义事件将数值同步给父组件
   methods:{

   addcount(){

   this.setData({

   count:this.properties.count+1
   })

   this.triggerEvent('sync',{value:this.properties.count})
   }

   }
  1. 在父组件的js中,通过e.detail获取到子组件传递过来的数据
复制代码
   //home.js文件中

   syncCount(e){

   this.setData({
   count:e.detail.value
   })

四、获取组件实例

可在父组件里调用this.selectComponent('id或者class选择器'),获取子组件的实例对象,从而直接访问子组件的任意数据和方法,调用时需要传入一个选择器。

复制代码
home.wxml文件
<test5 count="{{count}}"  bind:sync="syncCount" class="custom"  id="cA"> </test5>
<button bindtap="getChild">获取子组件实例</button>

//home.js文件中
getChild(){

const child = this.selectComponent('custom')
child.setData({count:child.properties.count+1})
child.addCount()
},
相关推荐
小小王app小程序开发10 小时前
盲盒小程序一番赏衍生玩法:魔王赏、非酋赏、狂欢赏差异化分析
小程序
2501_9151063212 小时前
iOS App 测试工具全景分析,构建从开发调试到线上监控的多阶段工具链体系
android·测试工具·ios·小程序·uni-app·iphone·webview
头发还在的女程序员1 天前
基于JAVA语言的短剧小程序-抖音短剧小程序
java·开发语言·小程序
2501_916007471 天前
iOS 应用性能测试的工程化流程,构建从指标采集到问题归因的多工具协同测试体系
android·ios·小程序·https·uni-app·iphone·webview
源码_V_saaskw1 天前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
tbit2 天前
fluwx 拉起小程序WXLog:Error:fail to load Keychain status:-25300, keyData null:1
flutter·ios·微信小程序
book多得2 天前
刷题专用微信小程序推荐
微信小程序·小程序
00后程序员张2 天前
iOS 抓不到包怎么办?从 HTTPS 解密、QUIC 排查到 TCP 数据流分析的完整解决方案
android·tcp/ip·ios·小程序·https·uni-app·iphone
技术与健康2 天前
微信小程序云开发实践:共享环境与LLM整合经验
微信小程序·小程序
老华带你飞2 天前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·社区养老保障