小程序点击之数据绑定

<return />

<view class="all-wrap" style="padding-top:{{topHeight}}px;">

<view class="my-title">我的收藏</view>

<scroll-view

class="collect-list-container"

scroll-y

scroll-top="{{scrollTop}}"

refresher-enabled="{{true}}"

refresher-default-style="white"

refresher-triggered="{{isRefreshing}}"

bindrefresherrefresh="onPullDownRefresh"

>

<!-- 收藏列表 -->

<block wx:if="{{sortedKeys.length === 0}}">

<view class="collectList-nodata">暂无收藏内容</view>

</block>

<block wx:for="{{sortedKeys}}" wx:key="index" wx:for-item="type">

<view class="collect-part-title">{{type === 'FOOD' ? '美食卡' : (type === 'GOODS' ? '商品卡' : (type === 'ROUTE' ? '路线卡' : (type === 'KNOWLEDGE' ? '知识卡' : (type === 'ATTRACTION_VIEW' ? '景点卡' : (type === 'ATTRACTION_GUIDE' ? '讲解卡' : '')))))}}</view>

<scroll-view scroll-x class="collect-items">

<block wx:for="{{sortedCollects[type]}}" wx:key="id">

<view class="collect-item" bind:tap="onCardDetailAction">

<image class="collect-image" src="{{item.cardData.privData.imageUrl}}" mode="aspectFill"></image>

<text class="collect-name">{{item.cardData.name}}</text>

</view>

</block>

</scroll-view>

</block>

</scroll-view>

</view>

我们如果想要在onCardDetailAction关联绑定数据,应该如何呢?

在WXML中,你需要给每个收藏项绑定数据,这样在点击事件中才能获取到对应的item数据。以下是修改方案:

1. 修改WXML,添加data-item属性:

xml

复制代码
<view class="collect-item" bind:tap="onCardDetailAction" data-item="{{item}}">
  <image class="collect-image" src="{{item.cardData.privData.imageUrl}}" mode="aspectFill"></image>
  <text class="collect-name">{{item.cardData.name}}</text>
</view>

2. 修改JS,通过dataset获取数据:

javascript

复制代码
// 卡片详情
onCardDetailAction(e) {
  console.log('卡片详情', e);
  
  // 获取绑定的item数据
  const item = e.currentTarget.dataset.item;
  console.log('点击的item数据:', item);
  
  // 这里可以继续处理跳转逻辑
  if (item && item.cardData) {
    const cardId = item.cardData.id;
    const cardType = item.cardData.type;
    const resourceId = item.cardData.resourceId;
    
    console.log('卡片ID:', cardId, '卡片类型:', cardType, '资源ID:', resourceId);
    
    // 根据卡片类型跳转到不同页面
    // wx.navigateTo({
    //   url: `/pages/cardDetail/cardDetail?cardId=${cardId}&type=${cardType}`
    // });
  }
}

3. 如果你需要更精确的数据,可以只绑定必要的数据:

xml

复制代码
<!-- 只绑定必要的数据,减少数据传输量 -->
<view class="collect-item" bind:tap="onCardDetailAction" 
      data-cardid="{{item.cardData.id}}" 
      data-type="{{item.cardData.type}}"
      data-resourceid="{{item.cardData.resourceId}}">
  <image class="collect-image" src="{{item.cardData.privData.imageUrl}}" mode="aspectFill"></image>
  <text class="collect-name">{{item.cardData.name}}</text>
</view>

对应的JS代码:

javascript

复制代码
// 卡片详情
onCardDetailAction(e) {
  const dataset = e.currentTarget.dataset;
  console.log('卡片详情数据:', dataset);
  
  const cardId = dataset.cardid;
  const cardType = dataset.type;
  const resourceId = dataset.resourceid;
  
  console.log('卡片ID:', cardId, '卡片类型:', cardType, '资源ID:', resourceId);
  
  // 根据卡片类型跳转到不同页面
  // if (cardType === 'ATTRACTION_GUIDE') {
  //   wx.navigateTo({
  //     url: `/pages/guideDetail/guideDetail?id=${cardId}`
  //   });
  // } else if (cardType === 'FOOD') {
  //   wx.navigateTo({
  //     url: `/pages/foodDetail/foodDetail?id=${cardId}`
  //   });
  // }
  // ...其他类型处理
}

这样修改后,点击事件就能获取到对应的item数据了。建议使用第二种方式(只绑定必要数据),因为传输数据量更小,性能更好。

相关推荐
说私域17 小时前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序
毕设源码-邱学长19 小时前
【开题答辩全过程】以 基于微信小程序的松辽律所咨询系统的设计与实现为例,包含答辩的问题和答案
微信小程序·小程序
+VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue物流配送中心信息化管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·小程序·课程设计
说私域21 小时前
B站内容生态下的私域流量运营创新:基于AI智能名片链动2+1模式与S2B2C商城小程序的融合实践
人工智能·小程序·流量运营
计算机毕设指导61 天前
基于微信小程序的钓鱼论坛系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
qq_12498707531 天前
基于微信小程序的宠物交易平台的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·毕业设计·计算机毕业设计
计算机毕设指导61 天前
基于微信小程序的精致护肤购物系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
sheji34162 天前
【开题答辩全过程】以 基于微信小程序的在线学习系统为例,包含答辩的问题和答案
学习·微信小程序·小程序
头发还在的女程序员2 天前
小剧场短剧影视小程序源码分享,搭建自己的短剧小程序
人工智能·小程序·短剧·影视·微剧
qq_12498707532 天前
基于springboot归家租房小程序的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·小程序·毕业设计·计算机毕业设计