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


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 相关文章推荐
JQuery 学习笔记 选择器之五
Jul 23 Javascript
js表格分页实现代码
Sep 18 Javascript
JavaScript实现上下浮动的窗口效果代码
Oct 12 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 Javascript
Vue过滤器的用法和自定义过滤器使用
Feb 08 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
Nov 15 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 Javascript
微信小程序实现默认第一个选中变色效果
Jul 17 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
PHP中的命名空间相关概念浅析
2015/01/22 PHP
简单的自定义php模板引擎
2016/08/26 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
javascript中new关键字详解
2015/12/14 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
python简易远程控制单线程版
2018/06/20 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
int在python中的含义以及用法
2019/06/27 Python
python随机数分布random均匀分布实例
2019/11/27 Python
python实现的Iou与Giou代码
2020/01/18 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
求职信格式范本
2013/11/15 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
投标邀请书范本
2015/02/02 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android