Android 开发者从0到1发布一个微信小程序的采坑过程——详情页实现

Android 开发者从0到1发布一个微信小程序的采坑过程——首页实现
Android 开发者从0到1发布一个微信小程序的采坑过程——详情页实现
Android 开发者从0到1发布一个微信小程序的采坑过程——使用帮助页面
Android 开发者从0到1发布一个微信小程序的采坑过程——发布上线后动态切换页面

需要代码可在文末扫码识别二维码,在我的----关于我—可找到我的联系方式。

实现的效果如下:

在这里插入图片描述

分析实现过程:

上面的截图从四个部分分析了该页面的实现:

  • 第一部分是导航栏的名字
  • 第二部分是开奖结果,也是这里实现的难点
  • 第三部分是下方的奖项列表
  • 第四部分是底部的分享和历史开奖按钮

第一部分 导航栏 的实现

这块没啥说的就是页面跳转的同时将名称传递过来,然后在这边接受后显示。

官方文档—事件

首页跳转详情页:

  • 在首页 wxml 中定义点击捕捉事件

catchtap=“onLotteryTap” :定义点击事件
data-name="{{lottery_name}}" :定义传递过去的数据名称和值

<template name="lotteryItemTemplate">
  <view class="item" catchtap="onLotteryTap" data-id="{{lottery_id}}" data-name="{{lottery_name}}">
    <view class="lottery-item">
      <view wx:if="{{ show_bubble }}" class='reddot'>开奖啦</view>
      <view class='lottery-item-name'>
      <text class="lottery-name">{{ lottery_name }}</text>
      <text class="lottery-time">{{ remarks }}</text>
      </view>
    </view>
  </view>
</template>

  • 在首页 js 中处理捕捉事件并跳转

event.currentTarget.dataset.name:获取到 wxml 中绑定的值

target 和 currentTarget 的区别

target:触发事件的源组件。也就是指向的是触发事件的元素,点击的目标 view,如果该 view 没有添加捕获事件则通过 target 不会获取到值。
currentTarget:事件绑定的当前组件。也就是指向的是捕获事件的元素,哪个 view 设置了事件捕获,通过 currentTarget 获取的值就是在该 view 中传递的值。

/**
   * 点击进入开奖详情
   */
  onLotteryTap: function(event) {
    var lottery_id = event.currentTarget.dataset.id;
    var lottery_name = event.currentTarget.dataset.name;
    var lottery_no = '';

    wx.navigateTo({
      url: "../lottery-detail/lottery-detail?id=" + lottery_id + "&name=" + lottery_name + "&no=" + lottery_no
    })
  },

    var id = options.id;
    var name = options.name;
    this.lottery_no = options.no;    
    // 设置标题
    wx.setNavigationBarTitle({
      title: name,
    })

第二部分 开奖号码 的实现

这块的实现难点有三个

  • 将服务器返回的字符串进行分割转为本地的一个数组
// 本地集合
var tempLotterys = [];
// 分割字符串
var lottery_number = this.lotterys.lottery_res.split(',');
// 再通过 for 循环添加到本地集合中 tempLotterys

  • 页面的显示
  <!-- 水平的开奖号码 -->
  <view class='view-lottery-number'>
    <view class='view-lottery'>
      <!-- for 实现 水平的开奖号码 -->
      <block wx:for="{{lotteryNumbers}}" wx:for-item="item" wx:index="idx">
          // 显示红色球号码
        <view wx:if="{{item.normal}}" class='view-normal'>
          <text>{{ item.lottery_number }}</text>
        </view>
        <view wx:else class='view-special'>
          // 显示蓝色球的号码
          <text>{{ item.lottery_number }}</text>
        </view>
      </block>
    </view>
    <block wx:if="{{is_fc_3d}}">
 </block>

  </view>

  • 蓝色球显示的个数判断

我这里的判断就比较简陋了,主要的思路是:通过观察开奖的结果进行判断,有的奖类是要显示两个蓝色球的,所以就标志为显示两个蓝球,有的是只显示为一个蓝色球的,所以就标志为一个蓝色球,还有就是没有蓝色球的。

最后一点就是页面布局的样式处理,这里的 福彩3D 是显示三个号码的,居中显示也是一个难点。我是将福彩的给它一个标记,是福彩则样式居中。

第三部分 奖等级列表 的实现

这块就比较简单了,根据得到的列表数据,填充到页面上即可,主要的代码如下:

 <!-- 竖直方向排列的6个奖项 -->
  <view class='view-lottery-awards'>
    <!-- 水平的排列的奖项介绍 -->
    <block wx:for="{{lotterys.lottery_prize}}" wx:for-item="item" wx:index="idx">
      <view>
        <text class='text-left'>{{ item.prize_name }}</text>
        <text class='text-center'>{{ item.prize_num }} 注</text>
        <text class='text-right'>{{ item.prize_amount }} 元</text>
      </view>
    </block>
  </view>

第四部分 底部分享按钮 的实现

这块的难点主要是底部按钮的样式,其他没啥的,主要的代码如下:

 <!-- 水平的历史开奖和分享给好友 -->
  <view class='view-bottom'>
    <view catchtap='onHistoryListClick' data-id='{{lotterys.lottery_id}}' data-name='{{lotterys.lottery_name}}'>
      <!-- 历史开奖 -->
      <button class="btn-history-lottery" type='warn'>历史开奖</button>
    </view>
    <view catchtap='onShareClick'>
      <!-- 告诉好友 -->
      <button class="btn-share-friend" type='warn' open-type='share'>告诉好友</button>
    </view>
  </view>

button 组件中 使用了 open-type=‘share’ 用户通过点击这个按钮就可以直接创建出分享弹窗,用户点击分享即可分享给好友。
在这里插入图片描述

上面说到了难点是样式的实现,这里贴一下底部样式的实现:


.view-bottom {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 100rpx;
  position: fixed;
  bottom: 20rpx;
  align-items: center;
}

.view-bottom view {
  width: 100%;
  margin: 0 20rpx;
  height: 100rpx;
  line-height: 100rpx;
  color: #fff;
  text-align: center;
}
.btn-history-lottery::after {
  border: 0; 
  border-radius: 6rpx;
}

.btn-share-friend::after {
  border: 0; 
  border-radius: 6rpx;

}

详情页面实现的介绍就到这里了,有问题的欢迎一起交流。

欢迎老铁扫码体验一波(目前扫码出现可能是查快递页面,这是个人开发者绕过上线提交的页面,12月份会改为查开奖页面)

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_龙衣

赏杯快乐水喝喝

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值