当前位置: 首页 > news >正文

微信小程序--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中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件
  2. //home.js文件中syncCount(e){console.log(e)
    })
  3. 在父组件的wxml中,通过自定义时间的形式,将步骤1定义的函数引用,传递给子组件
  4. home.wxml文件中,父组件的中count值
    <test5 count="{{count}}"  bind:sync="syncCount"></test5>
    <view>父组件中,count的值是:{{count}}</view>
  5. 在子组件的js文件中,调用this.triggerEvent(‘自定义事件的名称',{/*参数对象*/}),将数据发送到父组件
  6. test.js文件中,实现自增,触发自定义事件将数值同步给父组件
    methods:{addcount(){this.setData({count:this.properties.count+1
    })this.triggerEvent('sync',{value:this.properties.count})
    }}
  7. 在父组件的js中,通过e.detail获取到子组件传递过来的数据
  8. //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()
},
http://www.lryc.cn/news/426849.html

相关文章:

  • Linux | Linux进程万字全解:内核原理、进程状态转换、优先级调度策略与环境变量
  • VBA技术资料MF184:图片导入Word添加说明文字设置格式
  • 在函数设计中应用单一职责原则:函数分解与职责分离
  • 多线程锁机制面试
  • 《SQL 中计算地理坐标两点间距离的魔法》
  • 微服务可用性设计
  • 【扒代码】dave readme文档翻译
  • c语言---文件
  • Windows系统下Go安装与使用
  • day24-测试之接口测试基础
  • TSN 交换机
  • 针对thinkphp站点的漏洞挖掘和经验分享
  • MySQL数据库入门,pycharm连接数据库—详细讲解
  • .bat文件快速运行vue项目
  • 数据结构(邓俊辉)学习笔记】优先级队列 07——堆排序
  • npm install pnpm -g 报错的解决方法
  • 集师知识付费小程序开发
  • 前端开发提效工具——用户自定义代码片段
  • docker容器安全加固参考建议——筑梦之路
  • 基于 Appium 的 App 爬取实战
  • nvm与node安装
  • 【电子通识】什么是MSL湿敏等级
  • 【ARM 芯片 安全与攻击 5.4 -- Meltdown 攻击与防御介绍】
  • Django 后端架构开发:分页器到中间件开发
  • 亲测解决The client socket has failed to connect to
  • Intel ACRN 安装WIN10 VM
  • 贷齐乐案例
  • [Qt][Qt 网络][下]详细讲解
  • 十三、OpenCVSharp的目标检测
  • STM32标准库学习笔记-6.定时器-输入捕获