微信小程序基于本地缓存实现点赞功能的方法


Posted in Javascript onDecember 18, 2017

本文实例讲述了微信小程序基于本地缓存实现点赞功能的方法。分享给大家供大家参考,具体如下:

wxml中的写法

注意:

1. 使用wx:if="{{condition}}" wx:else实现图标的切换效果;
2. 为图片绑定点击事件bindtap="toCollect",两个image标签都要绑定!

<image wx:if="{{collection}}" src="/images/icon/pic1.png" bindtap="toCollect"></image>
<image wx:else src="/images/icon/pic2.png" bindtap="toCollect"></image>

js中的写法:

Page({
 data: {
 },
 onLoad: function(option) {
  // 获取接收到的id值
  var getId = option.id;
  // 让接收到的id值传递到data:{}里面
  this.setData({
   currentId: getId
  });
  // 读取所有的文章列表点赞缓存状态
  var cache = wx.getStorageSync('cache_key');
  // 如果缓存状态存在
  if (cache) {
   // 拿到所有缓存状态中的1个
   var currentCache = cache[getId];
   // 把拿到的缓存状态中的1个赋值给data中的collection,如果当前文章没有缓存状态,currentCache 的值就是 false,如果当前文章的缓存存在,那么 currentCache 就是有值的,有值的说明 currentCache 的值是 true
   this.setData({
    collection: currentCache
   })
  } else {
   // 如果所有的缓存状态都不存在 就让不存在的缓存存在
   var cache = {};
   // 既然所有的缓存都不存在,那么当前这个文章点赞的缓存也不存在,我们可以把当前这个文章点赞的缓存值设置为 false
   cache[getId] = false;
   // 把设置的当前文章点赞放在整体的缓存中
   wx.setStorageSync('cache_key',cache);
  }
 },
 // 点击图片的点赞事件 这里使用的是同步的方式
 toCollect: function(event) {
  // 获取所有的缓存
  var cache = wx.getStorageSync('cache_key');
  // 获取当前文章是否被点赞的缓存
  var currentCache = cache[this.data.currentId];
  // 取反,点赞的变成未点赞 未点赞的变成点赞
  currentCache = !currentCache;
  // 更新cache中的对应的1个的缓存值,使其等于当前取反的缓存值
  cache[this.data.currentId] = currentCache;
  // 重新设置缓存
  wx.setStorageSync('cache_key',cache);
  // 更新数据绑定,从而切换图片
  this.setData({
   // collection 默认的是 false
   collection: currentCache
  });
  // 交互反馈
  wx.showToast({
   title: currentCache?'点赞':'取消',
   icon: 'success',
   duration: 2000
  });
 }
})

js中操作反馈—wx.showModal的写法:

// 点击图片的点赞事件 这里使用的是同步的方式
toCollect: function(event) {
  // 获取缓存,得到当前文章是否被点赞
  var cache = wx.getStorageSync('cache_key');
  // 获取当前文章是否被点赞的缓存
  var currentCache = cache[this.data.currentId];
  // 取反,点赞的变成未点赞 未点赞的变成点赞
  currentCache = !currentCache;
  // 更新cache中的对应的1个的缓存值,使其等于当前取反的缓存值
  cache[this.data.currentId] = currentCache;
  // 调用 showModal方法
  this.showModal(cache,currentCache);
},
showModal: function(cache,currentCache) {
 var that = this;
 wx.showModal({
  title: "点赞"
  content: currentCache?"要点赞吗?":"要取消赞吗?",
  showCancel: "true",
  cancelText: "取消",
  cancelColor: "#666",
  confirmText: "确定",
  confirmColor: "#222",
  success: function(res) {
   if (res.confirm) {
    // 重新设置缓存
    wx.setStorageSync('cache_key',cache);
    // 更新数据绑定,从而切换图片
    that.setData({
     collection: currentCache
    })
   }
  }
 })
}

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JS 文件传参及处理技巧分析
May 13 Javascript
几个有趣的Javascript Hack
Jul 24 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
Oct 03 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
js仿iphone秒表功能 计算平均数
Jan 11 Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
简述vue中的config配置
Jan 23 Javascript
浅析Vue实例以及生命周期
Aug 14 Javascript
原生js实现滑块区间组件
Jan 20 Javascript
JavaScript模块详解
Dec 18 #Javascript
webpack打包js文件及部署的实现方法
Dec 18 #Javascript
react+redux的升级版todoList的实现
Dec 18 #Javascript
总结js中的一些兼容性易错的问题
Dec 18 #Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 #Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 #jQuery
详解如何使用 vue-cli 开发多页应用
Dec 16 #Javascript
You might like
第五节--克隆
2006/11/16 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python实现随机漫步算法
2018/08/27 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
学习十八大宣传标语
2014/10/09 职场文书
违纪开除通知书
2015/04/25 职场文书
酒店宣传语大全
2015/07/13 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技