微信小程序DEMO——面包旅行的代码
API
集合在一起写了一个页面,并导出,
const apiURL = 'http://xxx.xxxx.com'; const trip = {
hot(data,callback){
wx.request({
url: `${apiURL}/v2/index/`,
method: 'GET',
data,
header:{
Accept: 'application/json',
'Content-Type': 'application/json'
},
success(res) {
callback('success', res);
},
fail(res) {
callback('fail', res);
},
complete(res) {
callback('complete', res);
}
})
}
} module.exports = {
trip
}
请求的时候,采用 obj.xxx(data,(state,res)=>{}) 返回函数的形式挂载数据请求;
const api = require('../../utils/api.js'); Page({
data: { },
onLoad: function(options) {
let self = this;
let data = {
next_start: self.data.start
}
api.trip.hot(data,(state,res)=>{
if (state === 'success'){
// console.log(res.data);
let newList = res.data.data.elements;
newList.map((trip) => {
let item = trip;
item.data[0].date_added = formatTime(new Date(item.data[0].date_added * 1000),1)
return item;
});
if (needrefresh){
newList = self.data.trips.concat(newList);
};
self.setData({
trips: newList,
start: res.data.data.next_start,
loading: 'none'
});
// console.log(newList)
}
})
}
})
主页
主要写了上拉加载,下拉刷新数据,页面的跳转,多行文字的省略号。
下拉刷新,首页请求的数据中有一个 next_start 的字段。首次进入页面时,传入0,服务器返回数据和这个字段,记录这个字段,然后上拉刷新的时候,再把这个字段传给服务器,服务器会返回新的数据和新的字段。
上拉加载,还是这个 next_start 字段。首次获得数据之后,记录此字段,上拉加载时,传入此字段,返回新的数据和新的字段,新的数据需要和之前的数据合并,然后渲染。
页面的跳转,前往游记页面需要当前点击对象的 id 和 name 值,这个使用事件对象的 e.currentTarget.dataset 来获得,dataset 是由组件上以 data- 开头的属性集合。然后通过 wx.navigateTo() 跳转,路径中可以带参数(传值)。
多行文字的省略号,有些文字是需要省略写法的,单行又和多行不同。
<view data-id="{{item.data[0].id}}" data-name="{{item.data[0].name}}" bindtap='viewTrip'></view> viewTrip:function(e){
let dataTrip = e.currentTarget.dataset;
wx.navigateTo({
url: `../trip/trip?id=${dataTrip.id}&name=${dataTrip.name}`,
})
} .title{
font-size: 36rpx;
font-weight: bold;
line-height: 1.5;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
display: -webkit-box;
-webkit-box-orient: vertical;
}
游记页面
主要根据跳转过来的 id 和 name 来请求服务器数据,加载中画面,页面跳转。
请求数据,可以在生命周期 onload(options) 参数中获取打开当前页面路径中的参数,然后根据它请求服务器数据。
加载中画面,使用 wx.showToast() 和 wx.hideToast() 。
在加载数据的时候,页面可能会显示没有数据的代码,需要做判断处理,<view class='wrap' wx:if="{{ trip != null }}">,在数据没到之前,页面不渲染。
页面跳转和主页一样,使用 e.currentTarget.dataset ,wx.navigateTo() 和 onload(options) 。
onLoad: function(options) {
let self = this;
let id = options.id;
self.setData({
options
});
wx.showToast({
title: '正在加载',
icon: 'loading',
duration: 10000,
mask: true
});
api.trip.waypoint(id,(state,res) => {
if(state === 'success'){
let trip = res.data;
// console.log(trip);
self.setData({
trip
});
wx.hideToast();
}
})
},
路径页面
用户页面
发现页面
使用 swiper 组件,flex 布局
flex 布局,每行显示两个 item ,多的换行,这需要给 item 定宽。
.area{
display: flex;
justify-content:space-between;
align-items: center;
flex-direction: row;
flex-wrap:wrap;
padding: 0 20rpx;
}
.item{
width: 345rpx;
height: 345rpx;
margin-bottom: 20rpx;
}
目的地页面
各景区的得分(星星数量),这是一种很多地方都用的方法,最高5星,可以有半颗星。
- 先列个数组,值为12345,
- 首先依次判断当前 item 是否小于等于得分,然后渲染全颗黄星
- 然后依次判断当前 item 大于得分和 item-1 小于得分,然后渲染半颗黄星
- 最后依次判断当前 item 大于得分和 item-1 不小于得分,然后渲染灰色星。
这里还使用了模板的方式。需要引入和并且填写 name 值,传入数据需要用到 data 属性。
<template name='m-stars'>
<view class='m-stars'>
<block wx:for='{{[1,2,3,4,5]}}' wx:key='*this'>
<image class='stars' wx:if='{{item <= count}}' src='../../image/destination/star_s.png'></image>
<image class='stars' wx:if='{{item > count && item-1 < count}}' src='../../image/destination/semistar_s.png'></image>
<image class='stars' wx:if='{{item > count && !(item-1 < count)}}' src='../../image/destination/unstar_s.png'></image>
</block>
</view>
</template> <import src='../../component/stars/stars.wxml'/>
<template is='m-stars' data='{{count:attract.rating}}'></template>
微信小程序DEMO——面包旅行的代码的更多相关文章
- 近期热门微信小程序demo源码下载汇总
近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...
- 微信小程序demo
微信小程序demo github地址 去年小程序刚发布时特别火,赶潮流做了个demo.感觉小程序开发还是比较简单的,主要是官方文档写得比较好,遗憾的是很多API需要微信认证才能使用. 由于小程序包大小 ...
- 微信小程序demo-环球小镇
微信小程序-环球小镇说明:实现了环球小镇(huanqiuxiaozhen.com)移动端商城客户端部分功能,包括首页,分类,购物车,帐户,品牌列表,商品详情等功能. 项目下载:http://bb ...
- 微信小程序(有始有终,全部代码)开发--- 新增【录音】以及UI改进
开篇语 寒假发了一篇练手文章,不出意外地火了: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本,出乎意料的火了: 简年18: ...
- 微信小程序(有始有终,全部代码)开发--- 新增模块: 图片选取以及拍照功能
开篇语 前几天发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本: 简年18: 微信小程序(有始有终,全部代码)开发 ...
- 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复
开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...
- 记录一次用宝塔部署微信小程序Node.js后端接口代码的详细过程
一直忙着写毕设,上一次写博客还是元旦,大半年过去了.... 后面会不断分享各种新项目的源码与技术.欢迎关注一起学习哈! 记录一次部署微信小程序Node.js后端接口代码的详细过程,使用宝塔来部署. 我 ...
- 微信小程序——demo合集及简单的文档解读【五】
官方Demo https://github.com/wechat-miniprogram/miniprogram-demo 其他Demo https://www.cnblogs.com/ytkah/p ...
- 微信小程序demo理解
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana } p.p2 { margin: 0.0px 0.0px 0.0px 0.0p ...
随机推荐
- 从库延迟增大,MySQL日志出现InnoDB: page_cleaner: 1000ms intended loop took 17915ms.
今天同事负责的数据库从库出现从库延迟增大,MySQL日志InnoDB: page_cleaner: 1000ms intended loop took 17915ms. 了解原因,keepalived ...
- Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks
Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks 2019-06-01 09:52:4 ...
- Mybatis自定义控制台打印sql的日志工具
调试mybatis源码时,想要更改日志的的实现工具,首先需要了解其原理. 源码包里有这部分的解释,翻译如下: Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理: ...
- matplotlib显示黑白灰度图像颜色设置
对于黑白灰度图像(矩阵) 1. 默认使用伪彩色拉升 2 cmap参数为 binary,可能导致颜色反转 3. cmap = gray,same color as origin, that is, wh ...
- [转][osg]探索未知种族之osg类生物【目录】
作者:3wwang 原文链接:http://www.3wwang.cn/html/article_58.html 前序 探索未知种族之osg类生物---起源 ViewBase::frame函数中的Vi ...
- java获取全部子类或接口的全部实现
在JAVA中,获取一个类的全部父类是比较简单的,只需要通过反射(Class的getSuperclass()方法)即可.然而,如果想获得一个类的所有子类,或者获得实现某一个接口的所有实现类,相对比较麻烦 ...
- 提供对字符串的全角->半角,半角->全角转换
package com.opslab.util.algorithmImpl; import com.opslab.util.StringUtil; /** * 提供对字符串的全角->半角,半角- ...
- django.db.utils.OperationalError: (1251, 'Client does not support authentication protocol requested by server; consider upgrading MySQL client')
1.打开MySQL: cmd里 net start mysql mysql -hlocalhost -uroot -p回车 进入mysql数据库 2. 命令如下: 1.use mysql; 2.alt ...
- LinkedHashMap和hashMap和TreeMap的区别
推荐博客:https://www.jianshu.com/p/8f4f58b4b8ab 区别: LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. HashMa ...
- 改进初学者的PID-手自动切换
最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...