自定义组件-抽象节点

本文介绍了微信小程序中自定义组件的抽象节点特性,该特性允许组件模板中的某些节点由调用者决定。通过示例展示了如何在`selected-group`组件中使用抽象节点,并通过`generic:selectable`属性动态指定`custom-checkbox`或`custom-radio`作为实现。此外,还展示了在`index.wxml`中如何调用这些组件并切换默认实现。
摘要由CSDN通过智能技术生成

抽象节点

官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/generics.html

有时,自定义组件模版的一些节点,其对应的自定义组件不是由自定义组件本身确定,而是由自定义组件的调用者确定的,

这时就可以把这个节点声明为抽象节点

  • 这个特性自小程序基础库版本 1.9.6 开始支持。

代码实操

//文件结构
-components
 -generics
		-custom-checkbox.js
		-...
		-custom-radio.js
		-...
		-default.js
    -...
    -selected-group.js
		-...
-pages
	-index
		-index.js

调用关系图

在这里插入图片描述

  • custom-checkbox.wxml
<checkbox disabled="{{ disabled }}" checked="{{ selected }}"></checkbox>
  • custom-checkbox.js
Component({
  properties: {
        disabled:Boolean,
        selected:Boolean
    },
})
  • custom-radio.wxml
<radio disabled="{{disabled}}" checked="{{ selected }}"></radio>
  • custom-radio.js
Component({
  properties: {
        disabled:Boolean,
        selected:Boolean
    },
})
  • selected-group.wxml
<!--抽象节点 -->
<view wx:for="{{labels}}" wx:key="this">
    <label bindtap="itemtap" data-index="{{index}}">
        <!-- 写抽象节点 -->
        <selectable disable="{{false}}" selected="{{selected[index]}}"/>
        {{item}}
    </label>
</view>
  • selected-group.js
Component({
	data: {
        labels:[1,2,3],
        selected:[false,true,false]
    },
})
  • selected-group.json
{
    "component": true,
    "usingComponents": {},
    "componentGenerics":{
        "selectable": {
            "default": "./default"
        }
    }
}
  • default.wxml
<text>开发中...</text>
  • index.json
{
  "usingComponents": {
    "selected-group":"/components/generics/selected-group",
    "custom-checkbox":"/components/generics/custom-checkbox",
    "custom-radio":"/components/generics/custom-radio"
  }
}
  • index.wxml
<view>
<!--   generic:xxx="yyy" yyy是静态值 --> 
    <selected-group generic:selectable="custom-checkbox"></selected-group>
    <selected-group generic:selectable="custom-radio"></selected-group>
  	//对应default.wxml
    <selected-group generic:selectable="default"></selected-group>
</view>

截屏2021-09-25 上午1.47.34
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值