接上文:微信小程序开发06-一个业务页面的完成

github地址:https://github.com/yexiaochai/wxdemo

我们首页功能基本完成,我对比了下实际工作中的需求,完成度有70%以上,如果再花一两天时间,便能跟之前工作做的差不多了,今天我们继续实现一个页面列表,便结束这次的学习,后面几天要出差,所以总结性的文章本周未必能出来,静待下周吧。

这里考虑demo复杂度,列表页功能完成度也仅仅完成主功能模块,与真实工作完成度对比60%左右吧,于是我们开始愉快的代码,首先是将我们的页面样式实现:

 <view class="page-wrapper ">
<view class="bus-list js_bus_list ">
<view data-supplierid="100020" data-key="" class="bus-list-item ">
<view class="bus-time"> 08:25</view>
<view class="tobooking"> 预订 </view>
<view class="detail">
<view class="detail1">
<view class="start">
<text class="icon-circle s-icon1"></text>东莞市南城汽车客运站</view>
<view class="end">
<text class="icon-circle s-icon2"></text>连州</view>
</view>
<view class="tags">
<view>
<text class="price">¥135</text>
</view>
<view>
<text class="countleft">10张</text>
</view>
<view>
<text class="b-tags js_tags"></text>
</view>
</view>
</view>
</view>
</view> <view class="bus-list js_bus_list ">
<view data-supplierid="100020" data-key="" class="bus-list-item ">
<view class="bus-time"> 08:25</view>
<view class="tobooking"> 预订 </view>
<view class="detail">
<view class="detail1">
<view class="start">
<text class="icon-circle s-icon1"></text>东莞市南城汽车客运站</view>
<view class="end">
<text class="icon-circle s-icon2"></text>连州</view>
</view>
<view class="tags">
<view>
<text class="price">¥135</text>
</view>
<view>
<text class="countleft">10张</text>
</view>
<view>
<text class="b-tags js_tags"></text>
</view>
</view>
</view>
</view>
</view>
<view class="bus-list js_bus_list ">
<view data-supplierid="100020" data-key="" class="bus-list-item ">
<view class="bus-time"> 08:25</view>
<view class="tobooking"> 预订 </view>
<view class="detail">
<view class="detail1">
<view class="start">
<text class="icon-circle s-icon1"></text>东莞市南城汽车客运站</view>
<view class="end">
<text class="icon-circle s-icon2"></text>连州</view>
</view>
<view class="tags">
<view>
<text class="price">¥135</text>
</view>
<view>
<text class="countleft">10张</text>
</view>
<view>
<text class="b-tags js_tags"></text>
</view>
</view>
</view>
</view>
</view> <include src="../mod/calendar.wxml" />
<include src="../../utils/abstract-page.wxml" /> </view>
 .page-wrapper {
margin: 0;
font-size: 28rpx;
line-height: 1.5;
color: #333;
background-color: #efefef;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
-webkit-tap-highlight-color: transparent;
min-height:2000rpx;
} .bus-list .bus-list-item {
position: relative;
height: 160rpx;
background-color: #fff;
margin: 16rpx 0;
border: 2rpx solid #e5e5e5;
border-width: 2rpx 0;
} .bus-list .bus-list-item::before,.bus-list .bus-list-item::after {
position: absolute;
left: 122rpx;
content: '';
width: 24rpx;
height: 12rpx;
background-color: #efefef;
border: 2rpx solid #e5e5e5;
} .bus-list .bus-list-item::before {
border-radius: 0 0 60rpx 60rpx;
border-top: none;
top: -2rpx;
} .bus-list .bus-list-item::after {
border-radius: 60rpx 60rpx 0 0;
border-bottom: none;
bottom: -2rpx;
} .bus-list .bus-list-item .bus-time {
position: absolute;
left: 0;
width: 134rpx;
height: 100rpx;
line-height: 100rpx;
margin: 30rpx 0;
color: #00b358;
text-align: center;
font-size: 40rpx;
font-family: Arial;
border-right: 2rpx dashed #e5e5e5;
} .bus-list .bus-list-item .tobooking {
background-color: #00B358;
position: absolute;
right: 0;
width: 120rpx;
height: 160rpx;
line-height: 160rpx;
text-align: center;
color: #fff;
font-size: 30rpx;
} .bus-list .bus-list-item.disabled .tobooking {
background-color: #c5c5c5;
} .bus-list .bus-list-item .detail {
height: 80rpx;
padding: 36rpx 0;
margin: 0 140rpx 0 144rpx;
} .bus-list .bus-list-item .detail .sub-list{
height: 52rpx;
} .bus-list .bus-list-item .start, .bus-list .bus-list-item .end {
color: #333333;
font-size: 26rpx; } .bus-list .bus-list-item .price {
font-family: Arial;
color: #fd8f01;
font-size: 32rpx;
font-weight: 600;
} .bus-list .bus-list-item.disabled .ticket {
display: none;
} .bus-list .bus-list-item .ticket {
color: #fd8f01;
font-size: 24rpx;
border: 2rpx solid #fd8f01;
padding: 2rpx 8rpx;
border-radius: 10rpx;
font-family: Arial;
} .bus-list .bus-list-item.disabled .ticket {
color: #c5c5c5;
} .bus-list .bus-list-item .s-icon1 {
margin: 0 10rpx;
border-color: #00B358;
} .bus-list .bus-list-item .s-icon2 {
margin: 0 10rpx;
border-color: #f06463;
} .bus-list .bus-list-item .tags {
width: 160rpx;
text-align: right;
position: absolute;
right: 0;
margin-right: 138rpx;
margin-top: 34rpx;
top: 0;
}

轻轻松松完成了页面主体布局:

然后这里需求请求数据,所以我们去设置一个请求实体:

 class ListModel extends DemoModel {
constructor() {
super();
this.url = '/schedule/list';
}
} module.exports = {
cityModel: new CityModel,
city2Model: new City2Model,
listModel: new ListModel }

开始请求参数:

 onLoad: function (data) {
let scope = this; if(!data || !data.sid || !data.aid || !data.date) {
this.showToast('参数错误');
return
} this.index = 0;
let listModel = models.listModel; listModel.setParam({
startcityid: data.sid,
arrivalcityid: data.aid,
startdatetime: data.date / 1000,
page: this.index + 1
}); this.showLoading();
listModel.execute(function(data) {
scope.hideLoading();
scope._appendList(data.schedules); }); }

接下来的工作便是渲染页面即可,如果不考虑细节,只是做demo,真的很轻易呢:)

 //获取公共ui操作类实例
const _page = require('../../utils/abstract-page.js');
let modCalendar = require('../mod/calendar.js');
const models = require('../../data/demo-model.js')
const util = require('../../utils/util.js') //获取应用实例
const app = getApp() Page(_page.initPage({
data: {
listData: []
},
// methods: uiUtil.getPageMethods(),
methods: {
}, goIndex: function () { wx.navigateTo({
url: '../index/index'
})
},
onShow: function () {
global.sss = this;
let scope = this;
}, _appendList: function (data) { for(let i = 0, len = data.length; i < len; i++) {
data[i].dateStr = util.dateUtil.format(new Date(data[i].datetime * 1000), 'H:F' )
} this.setData({
listData: this.data.listData.concat(data)
});
}, onLoad: function (data) {
let scope = this; if(!data || !data.sid || !data.aid || !data.date) {
this.showToast('参数错误');
return
} this.index = 0;
let listModel = models.listModel; listModel.setParam({
startcityid: data.sid,
arrivalcityid: data.aid,
startdatetime: data.date / 1000,
page: this.index + 1
}); this.showLoading();
listModel.execute(function(data) {
scope.hideLoading();
scope._appendList(data.schedules); }); }
}, {
modCalendar: modCalendar
}))
 <view class="page-wrapper ">
<view class="calendar-bar-wrapper js_calendar_wrapper">
<view class="bus-tabs calendar-bar">
<view class="tabs-item js_pre_day">前一天</view>
<view class="tabs-item js_show_calendar" style="-webkit-flex: 2; flex: 2;">2018-8-6 周一(明天)</view>
<view class="tabs-item js_next_day">后一天</view>
</view>
</view>
<view class="bus-list js_bus_list "> <block wx:for="{{listData}}" wx:key="k">
<view class="bus-list-item ">
<view class="bus-time">{{item.dateStr}}</view>
<view class="tobooking"> 预订 </view>
<view class="detail">
<view class="detail1">
<view class="start">
<text class="icon-circle s-icon1"></text>{{item.startstationname}}</view>
<view class="end">
<text class="icon-circle s-icon2"></text>{{item.arrivalstationname}}</view>
</view>
<view class="tags">
<view>
<text class="price">¥{{item.price / 100}}</text>
</view>
<view>
<text class="countleft">{{item.cansellcountamount}}张</text>
</view>
<view>
<text class="b-tags js_tags"></text>
</view>
</view>
</view>
</view> </block> </view> <include src="../mod/calendar.wxml" />
<include src="../../utils/abstract-page.wxml" /> <view class="bus-list js_bus_list " ontap="goIndex">
去首页
</view>
</view>

最后,我们完善一下这里日期相关操作,便暂时结束这次学习:

列表页的一些总结

我们做小程序相关学习有快两周了,完成了一个简单的demo,项目还是有一定复杂度,感觉上还是比较适合做小程序了解的,但是也有一些问题,比如写到后面事实上更多是业务的东西了,业务会涉及很多细节体验,需要耗时费力,比如今天的列表业务,显然就偷懒了,代码质量也没怎么关注,事实上大家可以思考一些问题,这里还差很多功能:

① 滚动加载

② 列表各种状态

③ ......

事实上,列表页是常用的一种业务页面,虽然各种列表页的筛选条件不一样,但是主体功能无非都是:

① 列表渲染

② 滚动加载

③ 条件筛选、重新渲染

所以说我们其实可以将其做成一个页面基类,跟abstract-page一个意思,这里留待我们下次来处理吧,借此我们微信小程序的学习教程就此结束,我后面几天总结下前面所学整理一个博客出来,帮助各位更好的了解

微信小程序开发07-列表页面怎么做的更多相关文章

  1. 微信小程序开发-新闻列表之新闻列表绑定

    微信小程序开发-新闻列表之新闻列表绑定开发教程: 1.效果图预览 2.准备工作 在拿到效果图后不要先急着去写代码,而是要去分析一下页面的整体结构,用什么方式定位和布局.小程序里建议使用flex布局,因 ...

  2. 转载【小程序】: 微信小程序开发---应用与页面的生命周期

    App App() App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. object参数说明: 属性 类型 描述 触发时机 onLaunch Functi ...

  3. 微信小程序开发 [07] 写在后面的话

    写在后面的话基本算是吐槽了,在学完小程序的课程之后,我用博客园的api,写了个闪存的小程序,本来兴致勃勃甚至这篇是准备写"我的第一个小程序发布啦",然而并没有. 不是说我偷懒了没写 ...

  4. 微信小程序开发 -- 获取当前页面路径

    Page.prototype就是this: 你在任何一个Page里面都可以使用route字段和setData()函数: 示例代码: /** * 生命周期函数--监听页面加载 */ onLoad: fu ...

  5. 微信小程序开发06-一个业务页面的完成

    前言 接上文:微信小程序开发05-日历组件的实现 github地址:https://github.com/yexiaochai/wxdemo 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...

  6. 微信小程序开发系列七:微信小程序的页面跳转

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  7. 微信小程序开发--页面结构

    一.微信小程序开发--页面文件组成 [page.name].js 页面逻辑文件,用于创建页面对象,以及处理页面生命周期控制和数据处理 [page.name].wxml wxml指的是Wei Xin M ...

  8. 微信小程序开发:学习笔记[8]——页面跳转及传参

    微信小程序开发:学习笔记[8]——页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...

  9. 【微信小程序开发】页面配置

    app下的app.json文件是全局配置. app下的每一个page中,也可以配置.json文件. page中配置的内容是对应app中window配置项下的内容. page中的配置将覆盖window中 ...

随机推荐

  1. compress.go

    The Gorilla Authors. All rights reserved. // Use of this source code is governed by a BSD-style // l ...

  2. noip前集训

    10.18 关网了,2333 上午考试,130 rank16 一直在刚T2的割点,却直接弃了一道第一眼看上去不可做但实际并没那么难想的小模拟 但是T2没搞出来是不是也要反思一下,先是割点板子忘了,之后 ...

  3. BZOJ_3879_SvT_后缀数组+单调栈

    BZOJ_3879_SvT_后缀数组+单调栈 Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个 ...

  4. jsp --- jquery

    1 给标签 添加属性 $('#principalMoney').attr("disabled", false);  $("#career1").css('dis ...

  5. oracle常用系统函数

    一.字符类函数 字符类函数是专门用于字符处理的函数,处理的对象可以是字符或者字符串常量,也可以是字符类型的列. 1.ASCII(c)和CHR(i) ASCII(c)函数用于返回一个字符的ASCII码, ...

  6. Map集合中,关于取值和遍历的相关操作

    这是自己的关于map集合的相关操作的小研究,分享给大家. 主要代码内容包含以下: 1,map集合的遍历 2,根据key值获取value值 3,根据value值获取key值 4,返回最大value值对应 ...

  7. 深入理解java虚拟机之垃圾收集器

    Java一个重要的优势就是通过垃圾管理器GC (Garbage Collection)自动管理和回收内存,程序员无需通过调用方法来释放内存.也因此很好多的程序员可能会认为Java程序不会出现内存泄漏的 ...

  8. python接口自动化(十九)--Json 数据处理---实战(详解)

    简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...

  9. 深入javascript的主流的模块规范

    文章首发于sau交流学习社区 一.前言 目前主流的模块规范: 1.UMD通用模块 2.CommonJs 3.es6 module 二.UMD模块(通用模块) (function (global, fa ...

  10. 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收

    目录 微软Github开源项目入口 微软开源项目受欢迎程度排名 Visual Studio Code TypeScript RxJS .NET Core 基础类库 CNTK Microsoft cal ...