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


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 相关文章推荐
Javascript的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
May 07 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
Aug 01 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
Sep 04 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
快速入门Vue
Dec 19 Javascript
node中koa中间件机制详解
Aug 22 Javascript
JavaScript错误处理操作实例详解
Jan 04 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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常用image图像函数集
2013/06/24 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP中的self关键字详解
2019/06/23 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
javascript实现数独解法
2015/03/14 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python中str内置函数用法总结
2020/12/27 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
《小池塘》教学反思
2014/02/28 职场文书
社区工作者感言
2014/03/02 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
资产移交协议书
2016/03/24 职场文书
redis数据一致性的实现示例
2022/03/18 Redis