一、创建自定义组件
类似于页面,一个自定义组件由
jsonwxmlwxssjs4个文件组成。要编写一个自定义组件,首先需要在 json 文件中进行自定义组件声明(将 component 字段设为 true 可这一组文件设为自定义组件)
{ |
二、使用自定义组件
使用已注册的自定义组件前,首先要在页面的 json 文件中进行引用声明。此时需要提供每个自定义组件的标签名和对应的自定义组件文件路径
{ |
这样,在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。
<view> |
三、组件模版
- 在组件模板中可以提供一个
<slot>节点,用于承载组件引用时提供的子节点
<!-- 组件模板 --> |
<!-- 引用组件的页面模版 --> |
模版数据绑定
可以使用数据绑定,这样就可以向子组件的属性传递动态数据
<!-- 引用组件的页面模版 --> |
组件wxml的slot
- 在组件的
wxml中可以包含slot节点,用于承载组件使用者提供的wxml结构。 - 默认情况下,一个组件的
wxml中只能有一个slot。需要使用多slot时,可以在组件js中声明启用
Component({ |
此时,可以在这个组件的wxml中使用多个slot,以不同的 name 来区分
<!-- 组件模板 --> |
使用时,用 slot 属性来将节点插入到不同的slot上
<!-- 引用组件的页面模版 --> |
四、Component构造器
Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等
Component({ |
- 在 properties 定义段中,属性名采用驼峰写法(propertyName);
- 在 wxml 中,指定属性值时则对应使用连字符写法(
component-tag-name property-name="attr value"),应用于数据绑定时采用驼峰写法(attr="{{propertyName}}")
五、组件间通信与事件
组件间通信
组件间的基本通信方式有以下几种。
- WXML 数据绑定:用于父组件向子组件的指定属性设置数据
- 事件:用于子组件向父组件传递数据,可以传递任意数据。
- 如果以上两种方式不足以满足需要,父组件还可以通过
this.selectComponent方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法
监听事件
- 自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件
- 监听自定义组件事件的方法与监听基础组件事件的方法完全一致
<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 --> |
Page({ |
触发事件
自定义组件触发事件时,需要使用
triggerEvent方法,指定事件名、detail对象和事件选项
<!-- 在自定义组件中 --> |
Component({ |
六、自定义组件案例
实现一个弹框
- 在component下新建popup文件夹
popup.wxml
<view class="wx-popup" hidden="{{flag}}"> |
popup.js
Component({ |
在首页用这个组件需要配置一下,首先建一个名为index.json的文件,里边配置”usingComponents”,就是需要引入到首页
{ |
引入到首页
<!--index.wxml--> |
配置index.js操作点击事件
//index.js |