相关文章

微信小程序开发(一)微信开发者工具以及小程序框架介绍

微信小程序开发(二)开发之日历打卡小程序发现页

微信小程序开发(四)入门之打卡功能开发

前言

上篇介绍了日历打卡小程序发现页视图相关开发知识点。本篇文章将介绍小程序的网络请求,数据绑定等知识点以及打卡活动的创建功能。

网络请求

  • 小程序网路请求API
wx.request({url: 'http://www.ho0229.cn',             //接口地址data: {                                  //请求参数x: '' ,y: ''},header: {                                //请求头'content-type': 'application/json'   },success: function(res) {                //请求成功回调console.log(res.data)},fail:function(res){                     //请求失败回调console.log(res.data)   }
})
  • 网络请求封装
    utils包下,新建Post方法,将Post方法导出。
//POST请求封装
function Post(requestUrl, requestHandler) {this.requestPost('POST', requestUrl, requestHandler)
}function requestPost(method, requestUrl, requestHandler) {var userId = wx.getStorageSync("userId");var token = wx.getStorageSync("token");var params = requestHandler.params;wx.request({url: requestUrl,data: params,            //post请求参数method: method, header: {"authorization": authorization,"Content-Type": "application/json"},success: function (res) {requestHandler.success(res)},fail: function (res) {requestHandler.fail(res);},})
}
module.exports = {Get: Get,Post: Post,
}

页面的js文件引入utils中导出的网络请求方法,以项目中为例,Get请求更加简单,只需要将参数拼接在requestUrl 上即可

const app = getApp()                          //获取应用实例
var utils = require('../../utils/util.js')    //获取utils对象
Page({onLoad: function () {var dataUrl = app.globalData.laiSignBaseUrl + "xxx/firstPage"var params = new Object();                //创建object对象,添加请求参数params.uid = wx.getStorageSync('userId');params.currentpage = this.data.currentpage;utils.Post(                               dataUrl,                                //用utils对象调用Post方法{params,                               // post请求的参数success: function (res) {             // 返回成功if (res != null && res.data != null && res.data.success) {//绑定数据操作}},fail: function (res) {},})},
})

打卡创建

国际惯例,上需求图,我将依据图上的开发点进行分享(截长图实在太占篇幅)。

      
部分基础组件比如<input> <textarea> <picker>等使用组件的使用方法将不在这里介绍,大家可以看下开发文档即可。

1. 小程序选择并上传图片


wx.chooseImage({count: 1,                                     //选择张数sizeType: ['original', 'compressed'],         // 原图,压缩图片sourceType: ['album', 'camera'],              //相机或者拍照success: function (res) {var pages = getCurrentPages();              //获取当前所有页面的实例var prevPage = pages[pages.length - 2];     //获取到上个页面的page实例wx.uploadFile({url: app.globalData.laiSignBaseUrl + "xxx/upload/img/pic",filePath: res.tempFilePaths[0],          //选取后图片地址  这里返回的是腾讯服务器上的一个临时图片地址name: "file",success: function (res) {var data =  JSON.parse(res.data);        //上传成功返回值,注意:这里不是图片的Url,需要解析if(data != null && data.success){prevPage.setData({                     //上个页面的实例设置一个图片封面的值coverUrl:data.result[0]})}wx.navigateBack();                      //返回到上个页面},fail: function (res) {// console.log(res)}})},})

2. 活动图片实现

wxml :

<view class="erasable-layout"><image class="image" src="{{item}}" bindtap="previewImage" mode="aspectFill"></image><image class="delete-icon" data-index="{{index}}" bindtap="deleteImage" src="../imgs/delete.png"></image>
</view>

wxss :

.erasable-layout {position: relative;margin-right: 50rpx;width: 100rpx;height: 100rpx;
}.image{width:100%;height:100%;
}.delete-icon {width: 25rpx;height: 25rpx;position: absolute;left: 87rpx;top: -5rpx;
}

3.<rich-text>实现

在项目里有一个功能点是活动详情,以图文的形式呈现,也有可能是只显示图片或者只显示文字,两者都无情况暂时不考虑,图文内容就是创建打卡时填写的打卡详情(纯文字)和 活动图片。

这个功能开发我使用的是小程序提供的<rich-text> 富文本来实现功能。首先来看下小程序提供的富文本组件。

<!-- rich-text.wxml -->
<rich-text nodes="{{nodes}}" bindtap="tap"></rich-text>
// rich-text.js
Page({data: {nodes: [{name: 'div',attrs: {class: 'div_class',style: 'line-height: 60px; color: red;'},children: [{type: 'text',         //还有node类型text: 'Hello World!'}]}]},
})
元素节点:type = node属性         说明          类型           必填
name          标签名         String            是
attrs         属性          Object            否
children      子节点列表       Array         否              

<rich-text> 的使用方法很简单,其实唯一复杂的点是在 children 中,假设我们有一段文字和3张图片,那么我们 node 只需要这样显示即可。

nodes: [{name: 'div',attrs: {class: 'div_class',style: 'line-height: 60px; color: red;'},children: [{type: 'text',         //还有node类型text: 'Ho CSDN Rich-Text!'},{                        //图片1type: 'node',name: 'img',    attrs: {class: 'div_class',style: 'display:block;magin:0 auto;',src: 'http://ho_csdn_node_image1.png',width:'100%'},},{                        //图片2type: 'node',name: 'img',    attrs: {class: 'div_class',style: 'display:block;magin:0 auto;',src: 'http://ho_csdn_node_image2.png',width:'100%'},}}
}]

介绍到这里大家就明白了,其实就是在 children 数组里面添加一个个文本或者图片Object对象,如添加的图片示例,Object对象里面再添加一个名字为 attrs 的Object即可,部分代码如下,大家可以。

wx.uploadFile({url: app.globalData.laiSignBaseUrl + "xxx/upload/img/pic",filePath: filePath,name: "file",success: function (res) {var paramsOut = new Object();                                                          //children子ObectparamsOut.type = "node";paramsOut.name = "img";var paramsInner = new Object();                                                            //attrs paramsInner.style = "display:block;margin:0 auto;margin-top:8px;color:red;font-size:12px"  //图片属性paramsInner.src = JSON.parse(res.data).result[0] + "";                                     //图片urlparamsInner.width = "100%";                                                                //图片宽度paramsOut.attrs = paramsInner;tempNodesDatas.push(paramsOut);                                             //Object添加到children数组中that.setData({  nodesDatas: that.data.nodesDatas.concat(tempNodesDatas)}console.log("nodeDatas", that.data.nodesDatas)},fail: function (res) {}
})

结尾

本篇文章对小程序的网络请求进行了介绍,对其进行了封装。也介绍了<rich-text>富文本的使用方法。选择地点获取地址和经纬度将不再介绍,API相对简单。活动图片选择和网络请求封装Demo下载链接如下

Demo地址:网络请求封装及活动图片功能

微信小程序开发(三)入门之创建打卡活动相关推荐

  1. 微信小程序开发从入门到精通

    微信小程序开发从入门到精通 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识 ...

  2. MOOC微信小程序开发从入门到实践~笔记

    MOOC微信小程序开发从入门到实践~笔记 1.图标网站[icon]www.iconfont.cn 2.新建项目是必须需要AppID 3.app.js是页面逻辑文件 app.json是页面全局配置文件( ...

  3. 微信小程序开发快速入门

    最近整理文件,找到一个18年写的微信小程序开发快速入门,对于新手还是值得一看的,三年多过去了,可能一些接口已经更新了,不过,整体思想还是没变的. 如果你熟悉JavaScript,那你基本上看完这个文档 ...

  4. 微信小程序开发基础入门笔记

    文章目录 vsc 安装插件(小程序开发助手-微信小程序开发助手) 日常注意: 微信小程序WXS模块的使用 框架 1小程序结构和传统的web结构 2 基本的项目目录 3全局配置app.js 4.运算 = ...

  5. 入门微信小程序开发(三)数据绑定的几种用法

    一.数据绑定 与书写HTML页面一样,小程序页面也只能通过多写多练提升.在构建完页面后就出现了一个问题,我们该如何获取组件元素让数据与之关联呢? 在网页开发中,我们同样使用JS操作DOM,包括数据渲染 ...

  6. 【TgM阅读笔记】《微信小程序开发——从入门到实战》(陈云贵、高旭)

    阅读笔记系列(二) 阅读前言: 速度笔记: 比较起来: 此处摘录前言内容简介同时用以后续文章目录大纲: 阅读前言: 读本书是基于三大前提下的: 了解到其基础设计方式有Java Web程序设计有共同对接 ...

  7. 【helloworld】-微信小程序开发教程-入门篇【1】

    1. 开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用. 目标用户:无编程经验,但对微信小程序感兴趣的同学. 学习目标:开发者工具的基本使用流程,即创建.导入. ...

  8. 微信小程序开发的入门基础知识点

    一.小程序介绍_安装_使用 介绍小程序: 2017年1月9日,张小龙,腾讯. 支付宝现在也推出了小程序 无需安装,无需卸载,触手可及,用完即走 小程序基于微信,微信基于腾讯,腾讯有庞大的用户基数. 小 ...

  9. 微信小程序开发从入门到实战 --第1章 认识小程序

    第1章 认识小程序 1.1.1 微信小程序产生的背景 服务号 订阅号 企业微信 微信小程序 1.1.2什么是微信小程序 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及&qu ...

  10. 微信小程序开发工具中如何创建与pages目录同级的目录

    踩坑 我原本是想创建一个images目录,让它与pages目录同级,如下图: 但是结果出乎我的意料,我创建的目录跑到pages目录里面了,如下图: 解决办法 其实很简单,就是在创建目录之前,不要让pa ...

最新文章

  1. 运维企业专题(4)LVS高可用与负载均衡前篇——先学原理,再学配置
  2. python编程300集免费-python 300本电子书合集
  3. gophp解释器_对比平台--Go和PHP之间的区别
  4. Google准备开始新一年的大扩张
  5. 计算机主机温度,计算机的理想工作温度和湿度分别是多少
  6. sqliteman install parameter
  7. mysql报tns无监听_oracle提示TNS:无监听程序的解决办法
  8. python编程:从入门到实践学习笔记-文件和异常
  9. MySQL存储过程中的循环怎么写
  10. 现在的女孩找男朋友都是怎么考虑的?
  11. 单片机p2.0引脚c语言,单片机p2.0?
  12. 仪表指针样式_PPT标准图表太丑?试试仪表盘图表!
  13. 在WPF中开启摄像头扫描二维码(Media+Zxing)
  14. 论文阅读报告:Taxonomy-aware feature engineering for microbiome classification,Mai Oudah and Andreas Hen
  15. Android补间动画原理介绍
  16. 快桃科技居然给我无条件双倍工资!却又整天瞎搞
  17. OSChina 周六乱弹 —— 想通过么?收费!!!
  18. Laravel 模型中 $hidden 的作用
  19. 解决Centos7关闭You have new mail in /var/spool/mail/root提示
  20. 小论文投稿经历与经验

热门文章

  1. Android Q 适配,看这篇就妥了
  2. 【Nginx基础知识】
  3. InputStream (输入流) 与 OutputStream (输出流) 转换
  4. VM 将宿主机文件夹 映射至 虚拟机以及vm tools【共享文件夹、复制粘贴、拖动上传下载】
  5. java面试题(一)java面试题集合
  6. org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing
  7. MySql 函数大全
  8. 数据结构-树与深度优先遍历
  9. 普通本科,一年经验外包直接跳槽阿里?论我是怎么快速晋升的
  10. autocad 2014 闪退的一种解决办法: 点击菜单栏即闪退报错