目录

  • 背景图片在手机里无法显示
  • 获取时间
  • 一个模拟框渲染不同的数据
  • 选择器
  • radio组件
  • JavaScript增加数组元素
  • 图片预览
  • Wx:if的妙用:
  • colorUI组件库的使用

背景图片在手机里无法显示

小程序无法加载本地图片为背景图片,需要base64转码:

 background:'/images/backgroundlo.jpg'let base64 = wx.getFileSystemManager().readFileSync(that.data.background, 'base64');that.setData({background: 'data:image/png;base64,' + base64});
 <image class='background' src="{{background}}" mode="aspectFill"></image>

在接受照片信息时,我刚开始以为是一堆乱码(一些什么框框),后来明白其实不是,只是一些二进制编码,这是也需要base64转码,而且在请求文件里还需要注明:

 header: { 'content-type': 'application/json'},method: 'GET',responseType: 'arraybuffer',success: (result) => {console.log(result.data)that.setData({photo: wx.arrayBufferToBase64(result.data)})

在html里:

<image style=" height:180rpx;width:180rpx; margin-left:80rpx;margin-right:50rpx; margin-top:50rpx" src="data:image/jpg;base64,{{photo}}"></image>

另外,当从后台获取base64格式的图片时,要注意当显示不出来时,可能是因为字符串中有换行,需要将他们替换成空串

      capthcha:res.data.captchaBase64.replace(/[\r\n]/g, ''),//必须将换行符替换成空字符才能显示出来

获取时间

在util.js里提供了获取时间的函数,但是我只需要得到年月即可,所以仿照自带函数自己编了两个:

const formatTime = date => {const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const hour = date.getHours()const minute = date.getMinutes()const second = date.getSeconds()return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}const getyear = date => {const year = date.getFullYear()return year;
}const getmonth = date => {const month = date.getMonth() + 1;return month;
}

第一个是自带的函数,后两个是我自己仿照的,具体使用参照我封装的Req函数

 var year=app.func.getyear(new Date());

一个模拟框渲染不同的数据

通过一个模拟框显示列表中不同的数据,这里也需要使用data- 来绑定对应的数据,进而赋值给模拟框中的显示数据,即将模拟框中的数据也变量化,再用setdata进行实时改变:(这里我深刻体会到了响应式开发的优势)
Wxml中:

<view class="action bg-blue round padding-sm" bindtap="showModal2" data-target="Modal" data-id="{{index}}" data-content="{{item.cjzc_list}}"><text class="text-white text-lg ">总  评:{{item.bfzcj}}</text></view></view>

Js中:

showModal2(e) {this.setData({modalName2: e.currentTarget.dataset.target,pscjname:e.currentTarget.dataset.content[0].component_name,pscjratio:e.currentTarget.dataset.content[0].component_ratio,pscjscore:e.currentTarget.dataset.content[0].component_score,qmcjname:e.currentTarget.dataset.content[1].component_name,qmcjratio:e.currentTarget.dataset.content[1].component_ratio,qmcjscore:e.currentTarget.dataset.content[1].component_score,})},hideModal2(e) {this.setData({modalName2: null})},

模拟框对应的wxml:

<view class="cu-modal {{modalName2=='Modal'?'show':''}}"><view class="cu-dialog  "><view class="cu-bar bg-blue light justify-end"><view class="content ">成绩明细</view><view class="action" bindtap="hideModal2"><text class="cuIcon-close text-red"></text></view></view><view class="padding-top"><text class="text-black  text-xl"> {{pscjname}}</text><text class="text-black  text-xl">:{{pscjscore}} </text><text class="text-grey  text-xl">( {{pscjratio}} )</text></view><view class="padding"><text class="text-black text-xl"> {{qmcjname}}</text><text class="text-black text-xl">:{{qmcjscore}} </text><text class="text-grey text-xl">( {{qmcjratio}} )</text></view></view>
</view>

选择器

微信自带日期,时间,地点的选择器,只需要在picker中写明mode属性,其中地点是一个数组形式:

<picker mode="region" bindchange="RegionChange" value="{{region}}" custom-item="{{customItem}}"><view class="picker">{{region[0]}},{{region[1]}},{{region[2]}}</view></picker>

而微信自带的这些选择器在js中获取相应的值时也与自制的选择器不同:

RegionChange: function(e) {this.setData({region: e.detail.value})},

而自制的:
得到的value值是元素的下标

transChange:function(e){this.setData({trans:this.data.transArray[e.detail.value]})},
transArray: ['火车', '高铁', '飞机', '自驾', '长途车', '其他'],
 <picker style="width:20%" bindchange="transChange" value="{{indexTrans}}" range="{{transArray}}" class="pickerStyle" style="color:blue;"><view class="picker">{{trans}}</view></picker>

radio组件

 <radio-group class="block"><view class="cu-form-group"><view><radio class="red radio" data-id="1" bindtap="getinfo4"></radio>是<radio class="blue radio margin-left-sm" data-id="0" bindtap="getinfo4" ></radio>否</view></view></radio-group>

JavaScript增加数组元素

项目中有一个增加中转行程的需求,每一个中转对应起始站,座位号,位次等,而且中转个数也不确定,本来按照c++的思路用链表更方便哈,但是JavaScript对添加数组的元素很友好,使用array.push(),array.splice()可以很方便的添加和删除数组,故采用了对象数组
增加中转:

addList: function() {n = n + 1;console.log(n)let item = {};item.id = n;item.start = '';item.trans = '火车';item.stop = '';item.timetable = '';item.seat='';this.data.path.push(item);let tem = this.data.paththis.setData({path: tem})console.log(this.data.path)
},

其中n是全局变量,注意此处push以后path数组并没有被改变,还需要setdata操作(不知道为什么)
删除数组操作:

deleteList: function(e) {let n = e.currentTarget.dataset.miindexconsole.log(n)this.data.path.splice(n, 1)let tem = this.data.pathconsole.log(this.data.path)this.setData({path: tem})
},

n为所要删除的数组的下标,此时的n不是全局变量
那么将输入的值进行存储也需要首先获得下标:

getmiddleStart: function(e) {let n = e.currentTarget.dataset.miindexlet tem = this.data.pathtem[n].start = e.detail.valuethis.setData({path: tem})console.log(this.data.path)
},

在这些操作中对元素的定位很关键(即下标)
字符串的拼接(是真的好用!)

图片预览

图片预览,只能使用网络图片

data: {imgArr:['url']},previewImg:function(){var imgArr = this.data.imgArr;wx.previewImage({current: imgArr[0],     //当前图片地址urls: imgArr,               //所有要预览的图片的地址集合 数组形式success: function(res) {},fail: function(res) {},complete: function(res) {},})},

且必须是一个数组的形式存储,项目中的需求是只需要一个图片

Wx:if的妙用:

  <text wx:if="{{stu_id}}" bindtap="gotomyinfor">{{stu_id}} ></text><text wx:else bindtap="toLogin">请登录 ></text>

在两种情况下分别绑定不同的函数,使得执行不一样的功能,自我感觉很是高级(在开发过程中突然领悟到的hhh)

colorUI组件库的使用

在该项目中,我使用了colorUI组件库,确实为我省了不少活,(老实说我的css不咋地,还需要重新好好梳理一遍)
Colorui组件库中内置许多类名(如:text—bold,margin-top等),一读即懂,需要时直接添加即可,比如下述操作可以将小按钮居中,自己在开发中了解并记住了很多,估计以后不用了过不了多久就忘光了(我还是对自己有一个清晰的认识 捂脸)

 <view class="bg-white flex justify-center"><button wx:if="{{stu_id}}" class="cu-btn round bg-red margin-tb-sm lg shadow" bindtap="loginOut">注    销</button>

在一些类名中,存在一些css类名是变量的情况,需要结合对应的js文件进行分析:

 <view class="cu-list menu {{menuBorder?'sm-border':''}} {{menuCard?'card-menu margin-top':''}}">

还比如这一个:class中list可以替换成图标库里的任意一个图标

<text class="cuIcon-list text-blue  "></text>

总之 colorUI组件真的太好用了,太方便了,以后还要继续总结,至少现在自己有一个想法,可不可以自己仿照这个做一个组件库,应用到自己以后的web开发学习中(hhh),长路漫漫,吾将上下而求索。

2020年暑期小程序项目总结(二)相关推荐

  1. 云开发小程序项目实战 二

    首先,我们先把全局的颜色样式设置好: 然后把 app.wxss 文件以及 style 目录下的 guide.wxss 文件中的内容清空: 轮播图组件 先在页面加载初始数据中,加入轮播图所要用到的图片地 ...

  2. 微信小程序项目实战之天气预报

    概述 微信小程序项目实战之天气预报 详细 代码下载:http://www.demodashi.com/demo/10634.html 一.准备工作 1.注册微信小程序 2.注册和风天气账号 3.注册百 ...

  3. 微信小程序项目实战之豆瓣天气

    概述 微信小程序项目实战之豆瓣天气 详细 代码下载:http://www.demodashi.com/demo/10943.html 一.准备工作 1.注册微信小程序 2.在小程序设置中设置reque ...

  4. 微信小程序项目开发教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  5. 小程序项目从Hbuilder转移到vscode步骤

    小程序项目HbuilderX转移到vscode开发步骤 步骤总览 一.安装一个脚手架版本vue-cli@4,注意是@4版本的 npm install -g @vue/cli@4 二.在vue中创建一个 ...

  6. 面试题(2020)微信小程序常见面试题

    面试题(2020)微信小程序常见面试题 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 1.微信的小程序的主要文件 WXML-- ...

  7. 微信小程序项目转换成uniapp项目

    一.建立,代码如下: npm install miniprogram-to-uniapp -g 二.查看版本,代码如下: wtu -V 三.在命令行里,输入[wtu -i "你的小程序项目路 ...

  8. 集易市场微信小程序项目

    由一个团队共同打造一个为集美大学大学生服务的二手书交易平台 文章目录 前言 一.技术栈 二.发布流程 1.扫码isbn并获取检测 2.调用云函数添加书籍 3.微信支付 总结 前言 本文主要介绍集易市场 ...

  9. DAY10微信小程序项目开发技术总结

    一.每日实习任务 1.网页基础知识(html,css,js) 今天老师为我们介绍讲解了网页基础知识(html,css,js).首先,我们安装了谷歌浏览器及sublime text.老师为我们介绍了ht ...

最新文章

  1. MySQL innodb_autoinc_lock_mode 详解
  2. 鸿蒙股票深度分析,本月华为鸿蒙概念股市回顾分析(3月31日)
  3. SpringBoot高级-消息-RabbitTemplate发送接受消息序列化机制
  4. 命令行 java文本编辑工具 重载 内存区域 栈 堆
  5. 双层板在哪层覆铜_PCB覆铜箔层压板分类和工艺解析
  6. 情人节来了,教你个用 Python 表白的技巧
  7. Fisher线性判别分析(LDA)
  8. 终端出厂后自动化运维方案
  9. ISO12233:2014 eSFR分辨率测试卡使用方法
  10. java的xsd文件_java – 如何通过相对路径引用本地XSD文件
  11. cad打开a3样板图形_cad a3图框下载-cada3标准图框模板 dwg版 - 河东下载站
  12. mac 谷歌浏览器 跨域访问
  13. 酒精需要存放在防爆柜中吗?
  14. arnold运动模糊nuke合成方法
  15. 360董事长周鸿祎:网络攻击损害不亚于杀伤性武器
  16. 前端如何实现即时通信?
  17. Swoole实现基于WebSocket的群聊私聊
  18. 计算机通过网口连接网络,使电脑连接网络的方法
  19. 电信云的原理及相关架构
  20. Oracle实现按季度划分,并计数

热门文章

  1. php实现QQ打开跳转浏览器,这个网站怎么实现在QQ与微信中打开跳转到浏览器中的?...
  2. SmartRefreshLayout 上拉加载下拉刷新
  3. Python 实现计算moran莫兰指数和local morcan 局部莫兰指数
  4. win10电脑发现不了华为share_华为手机显示Win10计算机,并一直显示要投影的解决方案...
  5. 追查Could not get a databaseId from dataSource
  6. mpvue-echarts柱状图数据偏少时不自适应拉开柱子间距
  7. 我不怕千万人嘲笑,只怕自己投降。
  8. css 100% 和 100vh区别
  9. 【centos7 Sftp 文件上传 安装手册】
  10. ANNALS of Neurology:中风恢复过程中脑机接口可促进运动想象训练