微信小程序中自定义组件

  • 在项目根目录下创建 components 目录, 将所有的组件都放在该目录下, 组件中四个文件的名字都是 index. 注: 当然放在其他目录下, 其他的名字也可以, 包含以下文件和变量的命名, 都只是个人习惯而已

组件定义

  • /components/index-active-item/index.wxml
    <view data-active-id="{{activeItem.id}}" bind:tap="onGoToDetail">
        <image src="{{activeItem.event_banner}}" mode="scaleToFill"></image>
        <view class="active-title">{{activeItem.sub_title}}</view>
    </view>
    
  • /components/index-active-item/index.js
    • 该组件中接收 activeItem 活动列表页显示的数据
    • 同时, 由于需要从活动列表页跳转到活动详情页, 所以在 index.wxml 中绑定 data-active-id 属性, 以及绑定跳转到详情页的方法 bind:tap="onGoToDetail". 注: 绑定属性的时候, 必须是 data 开头的
    • onGoToDetail 方法中的参数 params 中可以获取到上面绑定的 id, 但是小程序会自动将在 index.wxml 中绑定的属性名去掉前面的 data, 并将后面的内容转换成小驼峰命名
    • this.triggerEvent('detail',{id}): 将
    Component({
      properties: {
        // 需要定义要接收的数据的格式和默认值
        activeItem: {
          type: Object,
          value: null
        }
      },
      data: {
        activeItem: {}
      },
      methods: {
        onGoToDetail(params) {
          const id = params.currentTarget.dataset['activeId']
          // 向父组件中传递的数据
          this.triggerEvent('detail',{id})
        }
      }
    });
    

引用组件

  1. /pages/index/index.json 中引用组件
    "usingComponents": {
    	"xs-active-item": "/components/index-active-item/index"
    }
    
  2. /pages/index/index.wxml 中使用组件
    <xs-active-item 
    	bind:detail="goToActiveDetail" 
    	wx:for="{{activeList}}"
    	wx:key="item.id"
    	activeItem="{{item}}">
    </xs-article-item>
    
  3. /pages/index/index.js 中可以获取到子组件中传递过来的参数
    goToActiveDetail(params) {
    	console.log(params)
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值